【发布时间】:2019-02-18 16:55:08
【问题描述】:
我想了解为什么这个脚本不能完全释放他的内存分配。 Windows 内存使用图表从这些大约 400Mb 的总分配中下降了一点。 所有内存都可以使用 int 数组释放,但不能使用 char* 数组
如何正确地做?非常感谢您的帮助...
void testAlloc() {
unsigned char error = 0;
char **arr;
char **buf;
size_t size = 1;
size_t idx = 0;
size_t nextIdx;
size_t newSize;
arr = calloc(size, sizeof(char*));
while(idx < 9999999) {
nextIdx = idx+1;
newSize = nextIdx*2;
if(nextIdx > size) {
buf = realloc(arr, newSize * sizeof(char*));
if(buf != NULL) {
arr = buf;
size = newSize;
}else{
error = 1;
}
}
if(!error) {
arr[idx] = calloc(32, sizeof(char));
arr[idx] = "sample text";
}
idx++;
}
MessageBox(NULL, "stop before free", "", MB_OK);
size_t i = 0;
if(!error && arr != NULL) {
while(i < idx) {
free(arr[i]);
i++;
}
free(arr);
arr = NULL;
}
}
testAlloc();
【问题讨论】: