从函数返回本地声明的指针会导致它切换作用域吗?

Does returning a locally-declared pointer from a function cause it to switch scope?

我知道养成使用 free() 函数销毁指针的习惯是件好事,但如果从函数返回指针会怎样?我假设它不会发送副本,因为没有机会销毁它。指针 "switch" 是否指向调用函数?

示例(无用代码,当心):

int* getOne(){
    int a = 1, *pA;
    pA = &a;
    return pA;  //what happens to this
}

int main(){
    printf("%i", getOne()); //uses data from the same addresses allocated to pA above?
    return 0;
}

不,您的代码调用 undefined behaviour,因为指针指向的内存不再存在。如果您希望返回的指针有效,则需要为其动态分配内存,live 超出函数生命周期。

C中,可以使用malloc()和family来分配动态内存。

FWIW,free() 不会破坏 指针 。如果已分配,它将动态分配的内存释放给指针。使用非动态分配的指针调用 free,将再次导致 UB。