コードで_CrtIsValidHeapPointerエラーが発生しました。そして、私はついに問題の原因を突き止めました。
以下の例を使用して説明します。
char* c=(char*)malloc(20*sizeof(char));
//cout<<&c<<endl;
c="hello world";
//cout<<&c<<endl; //if you uncomment the 2 clauses,you'll see the address is the same
//which means the string literal is in the heap
cout<<c<<endl;
free(c);
1)文字列リテラルで使用されているスペースを解放できないように見えましたか?なんで?
2)valeeをcharの配列に割り当てるために使用するメソッドは何ですか?
ps:私はsprintf(c,"hello world");
それがうまくいくのを使います。しかし、もっと良い方法はありますか?
答えを読んだ後。&cの意味を誤解していることに気づきました。代わりに
使用する必要があります。printf("%p\n",c);