您的位置:首页 > 其它

内存释放错误

2016-05-22 17:25 204 查看
今天遇到了两次内存释放错误,不一样的情形导致的,但出现的错误提示是一样的。如图:



第一次的内存错误代码是这样的

struct StackNode{
int element;
StackNode* next;
};

StackNode* s = (StackNode*)malloc(sizeof(StackNode*));
free(s);


内存释放错误因为内存空间分配时出错了,应该是:

StackNode* s = (StackNode*)malloc(sizeof(struct StackNode));


因为分配的结构类型出错,释放内存空间是计算机不知道这个类型,故出错。

第二次内存释放错误:

typedef int elm_type;
elm_type*a = new elm_type[10];
delete []a;


开始我是用的:

elm_type *a = (elm_type*)malloc(sizeof(elm_type) * 10);
free(a);


我以为malloc的局限性导致的,换了new和delete仍然是这个错误,后来发现原来是我在对a的操作越界了,出现了a[10],造成内存释放错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  内存 malloc