C語言函數內局部變量釋放的坑


首先把代碼貼上來:

#include <stdio.h>
#include<windows.h>
int f(int **iptr){
    int a = 100;
    *iptr = &a;
    return 0;
}

int main() {
int x = 7;
int *n;
int **m;
n=&x;
m=&n;
printf("m: %d\n",**m);
f(m);
printf("m: %d\n",**m);
Sleep(1000);
printf("m is %d\n",**m);
return 0;
}

然后我把執行的結果貼上來:

 

 被紅顏色框起來的地方就是坑。

這個雙重指針**m所指向的值是在函數f中被改變成了100,但是函數f執行結束之后,**m所指向的變量a被釋放。結果變成了0。

編譯器環境是mingw -w64

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM