私はvalgrindのに問題を抱えているValgrindは:これは私のプログラム(エラーが表示されるだけでなく、メインの部分)である :サイズの無効読み取り1
int main()
{
char comanda[N];
....
char *p;
while(fgets(comanda,100,stdin)!=NULL)
{
p=strtok(comanda," \n");
if (strcmp(comanda,"INIT")==0)
{
p=strtok(NULL," ");
Init(n);
}
395 >>if (strcmp(p,"DUMP")==0)
{
Dump(n);}
if (strcmp(p,"ALLOC")==0)
{
Alloc(j,n);
}
....return 0;}
と私はvalgrindの実行時に、それは言います:
Invalid read of size 1 at 0x401569: main (:395) Address 0x0 is not stack'd malloc'd or (recently) free'd
私はこのプログラムの問題ですかを把握することはできません。
'' strtok'の後に 'p'が' NULL'であることを確認してください。 – DCoder
デバッガの下でプログラムを実行して、何が間違っているのかを判断することもよいでしょう。 –
デバッガはここでは必要ありませんが、valgrindはここで何が起こっているかを正確に示しています。 @ user1934103、あなたに何を伝えているのかをお読みください。それが示している場所では、どのアドレスが '0x0'ですか?したがって、 'p'は' 0'です。 –