-1

私はCでこの関数を持っています:

static Node* newNode(void* e){
Node n={e,NULL,NULL};
return &n;
}

コンパイル中に、なぜそれが起こるのかを理解したいという次の警告が表示されます。

warning: function returns address of local variable [enabled by default]

その背後には、どのような危険が潜んでいるのでしょうか。

ありがとうございました

4

2 に答える 2

5

関数から戻ると、ローカル変数は破棄されます。関数が返された後にそれらにアクセスすることは未定義の動作です。これを行わないでください。

于 2012-07-01T10:18:33.970 に答える
0

警告は、変数のスコープが関数に対してローカルであるためです。関数が返されると、その変数はスコープ内になくなり、その値は未定義になります。

于 2012-07-01T11:16:16.280 に答える