一道關於記憶體分配的筆試題

2021-07-06 10:55:54 字數 636 閱讀 2504

void getmemory(char *p)

void test(void)

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

答:程式崩潰。

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

test函式中的 str一直都是 null。

strcpy(str, "hello world");將使程式崩潰。

char *getmemory(void)

void test(void)

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

答:可能是亂碼。

因為getmemory返回的是指向「棧記憶體」的指標,該指標的位址不是 null,但其原現的

內容已經被清除,新內容不可知。

void getmemory2(char **p, int num)

void test(void)

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

答:(1)能夠輸出hello

(2)記憶體洩漏

void test(void)

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

答:篡改動態記憶體區的內容,後果難以預料,非常危險。

因為free(str);之後,str成為野指標,

對野指標操作會造成不過預料的結果

一道關於 g 筆試題

正則裡 g 表示全域性 global 的意思,比如當替換字串時,如果正則不加g,則只替換一次。str hello,jack,hello,lily reg hello res str.replace reg,hi console.log res hi,jack,hello,lily 第二個hello未...

一道關於 g 筆試題

正則裡 g 表示全域性 global 的意思,比如當替換字串時,如果正則不加g,則只替換一次。str hello,jack,hello,lily reg hello res str.replace reg,hi console.log res hi,jack,hello,lily 第二個hello未...

關於指標的一道筆試題

題目 include includeint main char cp char cpp cp printf s n cpp printf s n cpp 3 printf s n cpp 2 3 printf s n cpp 1 1 1 system pause return 0 首先解這道題需要我...