c c 關於記憶體的思考 一

2021-09-17 20:30:17 字數 720 閱讀 1857

1.

void getmemory(char *p)

void test(void)

請問執行test函式會有什麼樣的結果?

答:程式崩潰。

因為getmemory並不能傳遞動態記憶體,

test函式中的 str一直都是 null。 strcpy(str, "hello world");將使程式崩潰。

2.

char *getmemory(void)

void test(void)

請問執行test函式會有什麼樣的結果?

答:可能是亂碼。

因為getmemory返回的是指向「棧記憶體」的指標,該指標的位址不是 null,但其原現的內容已經被 清除,新內容不可知。

3.

void getmemory2(char **p, int num)

void test(void)

請問執行test函式會有什麼樣的結果?

答: (1)能夠輸出hello (2)記憶體洩漏

4.

void test(void)

}

請問執行test函式會有什麼樣的結果?

答:篡改動態記憶體區的內容,後果難以預料,非常危險。 因為free(str);之後,str成為野指標, if(str != null)語句不起作用。

C 關於記憶體的思考

對面試既愛又恨,每次面試都像是經歷了一次洗禮,緊張又興奮,大腦高速運轉,最重要的是每次都會發現自身的許多不 足,這樣才能不斷的提高自我。下面是面試遇到的乙個問題,還挺有意思的。include void getmemory char p p char malloc 100 void test void...

關於C C 記憶體一點小知識

這裡室友拷了一段 過來除錯,這個過程中發現了一點由使用了未分配的記憶體造成的乙個問題,為此我花了一點時間來除錯問題的根源 如下 include include using namespace std int main if flag else return 0 答 破解上述加密的關鍵在於利用攻破st...

C C 記憶體知識 一

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 二 例子程式 這是乙個前輩寫的,非常詳細 int a 0 全域性初始化區 char p1 全域性未初始化區 main int b 棧 char s abc 棧 char p2 棧 char p3 123456 123456 0在常量區,p3在棧上...