我有一个关于释放内存的问题,如下:
string points; // some points sequences
char* charPoints = (char*)malloc((points.length() +1) * sizeof(char));
//do something
free(charPoints);
在使用乐器检查后,即使在释放内存后也会泄露
答案 0 :(得分:2)
我看到的唯一问题是当malloc返回NULL时,因为它无法分配足够的连续内存。你确定内存泄漏是由malloc / free引起的吗?
答案 1 :(得分:2)
传递给free
的指针必须与malloc
返回的指针相同。如果传递不同的指针,将导致未定义的行为。在执行操作之前获取指针的副本,例如递增charPoints
,然后将此原始指针传递给free
函数以正确释放内存。
答案 2 :(得分:0)
您的泄漏检测仪器很糟糕。
答案 3 :(得分:0)
使用下面显示的NULL值释放内存更新
自由(charPoints); charPoints =“NULL”