码迷,mamicode.com
首页 > 编程语言 > 详细

c++内存错误汇集

时间:2015-06-04 15:17:27      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:

 

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";

   则编译出错,提示越界.

 

c++内存错误汇集

标签:

原文地址:http://www.cnblogs.com/ike_li/p/4551711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!