C語言 有關記憶體的思考題

2021-07-01 21:05:24 字數 900 閱讀 5064

void getmemory(char *p)

void test(void)

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

程式編譯可以通過,執行中出現記憶體錯誤。

因為getmemory不能傳遞動態記憶體,test函式中的str一直都是null。strcpy(str,」hello world」);將由於str中沒有開闢足夠的記憶體空間而使記憶體崩潰。

char *getmemory(void)

void test(void)

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

程式編譯通過,可能顯示為亂碼。

因為getmemory返回的是指向「棧記憶體」的指標,該指標的位址不是null,但其原先的內容已經被清除,新內容不確定,可能顯示為亂碼。

void getmemory2(char **p,int num)

void test(void)

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

程式編譯通過,能夠正確輸出hello world,但是對於malloc沒有free,造成記憶體洩漏。

void test(void)

}

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

程式編譯通過,但是篡改動態記憶體區的內容,後果難以預料,非常危險。

因為free(str);之後,str成為野指標,if(null != str)語句對str不起作用,在str成為野指標之後,又繼續為str指標賦值,可能會纏上難以預料的後果。

具體了解c語言中記憶體管理可查閱:

c/c++中記憶體管理相關知識

C有關記憶體的思考題

void getmemery char p void test int main 請問執行test函式會有什麼樣的結果?下面是在windows下vs2013編譯器的結果 程式崩潰 因為getmemory方法並不能傳遞動態記憶體 test函式中的str一直都是null strcpy將使程式崩潰 之所以...

有關記憶體的思考題

摘自 高質量c c 程式設計指南 四 有關記憶體的思考題 20 分 void getmemory char p p char malloc 100 void test void char str null getmemory str strcpy str,hello world printf str...

有關記憶體的思考題

void getmemory char p void test void 請問執行test 函式會有什麼樣的結果?因為 getmemory 並不能傳遞動態記憶體,test 函式中的 str 一直都是 null。strcpy str,hello world 將使程式崩潰。2.char getmemor...