天天看点

内存越界并不等于马上出错

  内存越界是很让人发愁的事情.为什么发愁?关键就在于,越界访问了,并不会马上出错,甚至可能不出错.举例来说:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
  
int main(int argc, char **argv)
{
    char buffer[32] = "quantum6";
    printf("buffer = %s\n", buffer);

    //不出错.
    //buffer[55] = 0;
    
    //崩溃
    buffer[56] = 0;

    //会循环运行
    //buffer[56] = 8;

    printf("buffer = %s\n", buffer);

    return 0;
}           

  以上代码做过几次测试,都是这样的结果.