次のコードを考えてみましょう。この上** glibcの検出***無料():無効なポインタ:0x0000000000400b2c
** glibc detected *** free(): invalid pointer: 0x0000000000400b2c
私の研究:このプログラムを実行すると
int main()
{
char* s = (char*) malloc(sizeof(char)*10);
s="hello";
free(s);
}
を私はエラーを取得しますエラーは、malloc()
で十分なメモリスペースを割り当てないことが原因である可能性があることを示します。しかし、プログラムはすでにmalloc()
を呼び出しており、1char
のための十分なスペースを生成しています。
これは最新のC++のようなものではありませんが、有効なC++であってもそうです。 C++の優れた入門書(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)を手に入れ、適切なC++を学んでください。たとえば、 'malloc()'を使う代わりに、C++で 'std :: string'クラスを使うことができます。 –
ちょうど指摘すると、質問はC関連ではなく、C++ではない – EddieBytes
@EddieBytes:質問はもともとはC++のみタグ付けされていました。私は 'malloc'の結果をキャストする際に別の問題を引き起こす、それをCでタグ付けした編集を承認するのかどうかはわかりません。 – Mat