char 及char 申請記憶體空間區別

2021-06-21 11:53:23 字數 346 閱讀 5753

在程式設計師面試寶典中看到這兩種申請記憶體方式,瞬間發覺自己還是too young too simply

1、char *stra()

char str = "hello word";

return str;

2、char *stra()

char* str = "hello word";

return str;

這兩種寫法具有很大的區別

第一種申請的為區域性變數,當函式呼叫完成後,該塊記憶體(對應於記憶體中的棧)就被銷毀。申請的空間無法進行訪問

第二種申請的為全域性變數,當函式呼叫完成後,該塊記憶體依然存在(存在於記憶體中的全域性區域)。申請的空間依舊可以進行訪問

char 和char 申請空間的區別

資料結構助教時同學反饋的 include include include void func char s intmain 這樣寫邏輯上看是正確的,然而實際上輸出是錯的,除錯發現,在func函式中,p被正確賦予了a陣列的位址,但在出函式後,這塊位址的值被改變了。原因是char申請的函式棧上的空間來存...

12 記憶體空間的申請

使用者空間記憶體的申請函式為 malloc,相對應的記憶體釋放函式為 free。malloc 函式具備一下的記憶體能力 1 二次管理的的能力 當使用者空間 malloc 了一塊記憶體,這塊被申請的記憶體被立即 free 之後,並不會立即將這塊記憶體還給核心,而是將這塊記憶體還給了 c 庫,這塊記憶體...

malloc 到底如何申請記憶體空間?

malloc 到底從 得到了記憶體空間?答案是從堆裡面獲得空間。也就是說函式返回的指標是指向堆裡面的一塊記憶體。作業系統中有乙個記錄空閒記憶體位址的鍊錶。當作業系統收到程式的申請時,就會遍歷該鍊錶,然後就尋找第乙個空間大於所申請空間的堆結點,然後就將該結點從空閒結點鍊錶中刪除,並將該結點的空間分配給...