释放内存的最佳方法是什么?

| 我正在使用ANSIC。 我有一个用char数组创建的字符串对象。 我认为该对象会导致内存泄漏。 当我运行程序大约五分钟(可能接近10000次迭代)时,我使用的内存越来越大。 我试图通过释放和删除功能释放对象使用的内存。但是,删除不是有效的功能。另一方面,自由看上去首先运行良好。但是我得到了ѭ0 我怎样才能解决这个问题?我可以做不同的事情吗? 这是我的一些代码。
char *ext;
ext = calloc(20, sizeof(char));
//do something with ext
free(ext);
    
已邀请:
        在C语言中,您使用
malloc
在堆上分配了内存,并使用
free
进行了释放。所以你是对的。在C ++中使用
delete
,然后才使用
new
运算符分配内存。 如果在调用
free
时遇到无效的指针错误,则代码中可能存在错误,如果您发布该错误,我们可以看一下。     
        也许您正在写超出分配的内存末尾的记录。用
calloc(20, sizeof(char))
您为20个字符分配空间(19个\“ regular \”和一个字符串的空终止符)。 确保您的
strcat()
都不会尝试写\9ѭ以外的\“ regular \”字符。     
        没有更多代码: 内存中的一个数组,在ext指向该数组之前要覆盖其存储,并破坏了malloc()用来跟踪内存大小的\“ header \”类型,以便随后对free()进行调用(请考虑(((size_t * )ext)[-1]保留malloc的大小)。 您在ext [negative]中使用了负数组索引,但执行了同样的破坏。 ext以某种方式被修改。     

要回复问题请先登录注册