【c/c++】function returns address of local variable

1349 ワード

この問題は普通で、よくあります.例えば、sは局所変数であり、スタックに空間を割り当て、関数が終了すると空間を回収し、sが返す内容が無効になるため、次のコードがこのエラーを報告します.解決策はスタック上で空間を申請して戻ることですが、このようにするには空間の解放に注意する必要があります.
char* func() {
    char s[100];
    strcpy(s, "hello");
    return s;
}

int main(int argc, char **argv) {
    puts(func());
    return 0;
}
char* func() {
    char *s = malloc(100);
    strcpy(s, "hello");
    return s;
}

int main(int argc, char **argv) {
    puts(func());
    return 0;
}