char 配列を 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 は 100 ではなく無効な長さ 50 しかないため、free を使用します。
free(arr);
これはメモリリークを引き起こす可能性がありますか? つまり、オペレーティング システムは malloc の長さを記録しますか、それとも単に strlen を使用して長さを判断しますか?