当我有malloc的字符数组和初始化:内存泄漏释放字符数组
int i;
int length = 100;
char *arr = (char *) malloc (length * sizeof(char));
for (i = 0; i < length; i++) {
arr[i] = i;
}
然后我中间炭设置为“\ 0”:
arr[50] = '\0';
在这种情况下, ARR只有无效长度为50,而不是100 然后我用免费:
free(arr);
可这导致内存泄漏?即操作系统会记录malloc长度还是只使用strlen来判断长度?
“可能与实际执行有差异” - 是的。特别是因为你的例子正式导致一个未定义的行为。 –