2

malloc 呼び出しの結果を明示的にキャストする必要のないコードを検査していますが、これを実行しようとすると、コンパイラがエラーをスローします。

すなわち

char *somevar;
somevar = malloc(sizeof(char) * n); //error
somevar = (char *)malloc(sizeof(char) * n); // ok
4

2 に答える 2

9

これは、C コンパイラの代わりに C++ コンパイラを使用した場合に発生します。C++ では明示的なキャストが必要なため。問題は、結果のキャスト (アン) だけではなくmalloc、他のポインターへの void ポインターです。

于 2012-05-12T23:53:51.337 に答える
1

関数プロトタイプを含めることを覚えていましたか? malloc(3) の場合、これは次のとおりです。

#include <stdlib.h>
于 2012-05-13T00:06:54.663 に答える