以下のコードで何が間違っているのか、なぜ "ポインタが解放されていませんでした"というエラーが表示されます。 clangの使用。ポインタが解放されているが、Cで割り付けられていない
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static char * messagePtr;
int main()
{
messagePtr = (char *)malloc(sizeof(char) * 800);
if(messagePtr == NULL) {
printf("Bad malloc error\n");
exit(1);
}
// //gameLoop();
char outputMessage[50] = "";
messagePtr = outputMessage;
free(messagePtr);
messagePtr = NULL;
return 0;
}
'messagePtr = outputMessage;' =以前に割り当てた(今は流出した)ダイナミックメモリを指していません。それが表示されない場合は、使用している本やチュートリアルの中の動的メモリ管理に関するセクションを確認する必要があります。 – WhozCraig
C言語で 'malloc'のキャストは必要ありません。削除するほうがいいです。 –
これを覚えておいてください。"ポインタを解放 "しないで、**の**メモリを解放してください! (私は本当にそのようなナンセンスを広げる教師と深刻な話をしたい - 混乱を大幅に軽減する) – Olaf