C語言 動態記憶體分配

2022-05-18 14:31:47 字數 581 閱讀 7277

1樓:匿名使用者

p1=(int *)malloc(10*sizeof(int));就是生成了一個動態陣列啊

而且c語言裡p[x]實際上就等價於*(p+x),只要p是指標型別的變數,不管它是陣列,還是其他什麼,都不會報錯

2樓:匿名使用者

malloc函式的實質體現在,它有一個將可用的記憶體塊連線為一個長長的列表的所謂空閒連結串列。呼叫malloc函式時,它沿連線表尋找一個大到足以滿足使用者請求所需要的記憶體塊。然後,將該記憶體塊一分為二(一塊的大小與使用者請求的大小相等,另一塊的大小就是剩下的位元組)。

接下來,將分配給使用者的那塊記憶體傳給使用者,並將剩下的那塊(如果有的話)返回到連線表上

p1=(int *)malloc(10*sizeof(int))相當於生成了一個動態陣列,其長度可待定。

p1是一個指向一連續記憶體塊的指標。malloc申請時就相當於定義了一個指標,長度只是待定的,指標指向首地址。在一定長度下,這與陣列的儲存分配是一致的,因此可以像陣列那樣輸入輸出。

3樓:匿名使用者

下標操作符是對原始地址做指標偏移,是從彙編裡延續下來的寫法。

C 中new分配記憶體的問題,C 動態分配記憶體 記憶體洩漏問題 new

這樣是會有記憶體洩漏的,因為第一次執行s new stu 後,系統申請了一塊新的記憶體空間 型別為stu 並把其地址賦給s 第2此執行s new stu後,系統又申請了一塊新的記憶體空間,並把其地址賦給s,此時把s原來的值覆蓋掉了,也就是第一次申請的記憶體空間的地址丟失了 而delete s 只是把...

c語言分配超大的記憶體地址,c語言 分配一個超大的記憶體地址

可能是我沒太看懂樓主的意思啊 個人還是覺得樓主可能是沒搞懂malloc的用法malloc可以申請到記憶體中可以申請的最大大小 一個int不算啥樓主是想做什麼呢?如果要給其他型別的引數分配空間就要 type a type malloc sizeof type 比如double double a dou...

C語言分配記憶體後怎麼刪除特定記憶體的數值

三種辦法 1 用一個額外的陣列表示menbers陣列中哪些是有效的,要刪除是隻需將menbers 3 對應的標誌置成不可用即可 2 使用一個變數menberscount來表示有效的company個數,刪除後將後繼的company依次前移一個company空間,前移時可以用memcpy函式。所有前移完...