标签:
1.在free申请的内存出现heap corruption detected错误。
Heap Corruption。当输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,这就叫Heap Corruption。这通常也被用作黑客攻击的一种手段,因为如果在该空间之后的那段存储区域如果是比较重要的数据,就可以利用Heap Corruption来把这些数据修改掉了,后果当然可想而知了。
char a[] = "hello"; int array_length = strlen(a); char* p = NULL; p = (char*)malloc(sizeof(char)*array_length); strcpy(p, a); free(p);
下面就正常,不会出现此错误。
char a[] = "hello"; //‘0‘ int array_length = strlen(a)+1; char* p = NULL; p = (char*)malloc(sizeof(char)*array_length); strcpy(p, a); free(p); p = NULL;
声明字符数组时,[]中的数应为数组中字符个数,包括‘/0‘
如 char p[5] = "dddd";
则实际为:‘d‘ ‘d‘ ‘d‘ ‘d‘ ‘/0‘.
若 char p[5] = "ddddd";
则编译出错,提示越界.
标签:
原文地址:http://www.cnblogs.com/ike_li/p/4551711.html