我正在研究ANSI C。
我有一个用char数组创建的字符串对象。 我认为该对象会造成内存泄漏.. 当我运行我的程序大约五分钟(可能几乎10000次迭代)时,我使用的内存变得越来越大......
我试图用free和delete函数释放我的对象使用的内存。但是,删除不是有效的功能。在另一方面,自由看起来像先跑好。但我得到了free():invalid pointer
..
我该如何解决这个问题?我可以用不同的方式做到吗?
这是我的一些代码..
char *ext;
ext = calloc(20, sizeof(char));
//do something with ext
free(ext);
答案 0 :(得分:1)
在C中,您使用malloc
在堆上分配了内存,并且发布时使用free
。所以你在那里是对的。 delete
在C ++中使用,然后,仅当内存使用new
运算符分配时才会使用。
如果您在调用free
时收到无效指针错误,则代码中可能存在错误,如果您发布错误,我们可以查看它。
答案 1 :(得分:1)
也许你正在写出已分配内存的结尾。与
calloc(20, sizeof(char))
为20个字符分配空间(19“常规”和字符串的空终止符)。
非常确保strcat()
没有人尝试在str[18]
之外写“常规”字符。
答案 2 :(得分:0)
没有更多代码: