2D 動的 char 配列を設定する単純なプログラムがあります。割り当ては通常どおり機能します。私の問題は、配列の解放に依存しています。VC++ 2008 でピュア C を使用しています。
これは、配列を割り当てて初期化するときのコードです。
char** messsages = (char**)malloc(5*sizeof(char*));
initValorArrayMsgs(messsages, 5);
insertMsgToArray(5, messsages , "Test message.");
void insertMsgToArray(int totalLines, char** msgsArray, const char* msgToInsert)
{
int line = 0;
int size= strlen(msgToInsert);
for(; line < totalLines; line ++)
{
if(strlen(msgsArray[line ]) == 0)
{
msgsArray[line ] = (char*)malloc(sizeof(char) * size);
strcpy(msgsArray[line], msgToInsert);
break;
}
}
}
そして、これは配列を解放するコードです
void freeArrayMsgs(char** arry, int lines)
{
int i = 0;
for(; i < lines; i++)
{
if(strlen(arry[i]) == 0){
break;
}
free(arry[i]);
}
free(arry);
}
プログラムが最初の配列を解放しようとすると、ヒープ破損例外が発生します。
SOに関するいくつかの投稿を読んで、アレイを正しく解放しています。では、なぜ hep 破損の例外が発生するのでしょうか?