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在棧上...