この関数を何度も (正確には何回かは不明) 実行した後、単純なメモリ割り当てでエラーを検出します。なんでいきなりこうなるの?GDB で奇妙なことに気付きました。それを呼び出す関数では、通常、wrd には 6 桁の 16 進数値 (たとえば、wrd = 0x605140) がありますが、クラッシュする呼び出しでは、16 進数値は 2 桁しかありません。(ワード = 0x21)。wrd->length も確認しましたが、3 です。
クラッシュするラインは...
char *word_temp = malloc(wrd->length * sizeof(char));
編集:
wrdを作成するコードは次のとおりです...
while(fgets(input, 100, src) != 0)
{
int i = 0;
while(input[i] != '\0')
{
i++;
}
struct word *wrd = malloc(sizeof(struct word));
wrd->letters = input;
wrd->length = i;
オーバーフローが発生した場合、どうすれば修正できますか?