我有 malloc 一个 char 数组并初始化它:
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);
这会导致内存泄漏吗?ie操作系统会记录malloc长度还是只用strlen判断长度?