经典指数          
原因
1236
浏览数
0
收藏数
 

void func()
{
   char b[2]={0};
   strcpy(b,"aaaa");
}
以下说法那个正确()
  • Debug版崩溃,Release版正常
  • Debug版正常,Release版崩溃
  • Debug版崩溃,Release版崩溃
  • Debug版正常,Release版正常

     举报   纠错  
 
切换
1 个答案
因为在Debug中有ASSERT断言保护,所以要崩溃,而在Release优化中就会删掉ASSERT,所以会出现正常运行。 但是不推荐如此做,因为这样会覆盖不属于自己的内存,这是搭上了程序崩溃的列车,即未定义行为,出现什么后果都有可能的,程序员的职责是保证不越界,而不是追问越界之后会发生什么。就像生活中违法不一定立刻被抓,但是迟早是要被抓的。
 
切换
撰写答案
扫描后移动端查看本题