C語言malloc動態分配記憶體為什麼叫動態分配記憶體?感覺它分配的時候還是要人為指定大小,而不能根據

2022-03-02 07:23:45 字數 2326 閱讀 8518

1樓:儲楊

同學你誤解了,雖然是要認為指定大小的,但是可以在程式執行時用scanf()函式來隨意指定一個大小,如果不用動態記憶體的話,你在程式執行之前就要指定好大小。不明白可以繼續問!

2樓:

動態的意思是指隨時用到隨時分配,不用的時候隨時可以銷燬。

3樓:匿名使用者

動態記憶體分配不需要象陣列等靜態記憶體分配方法那樣需要預先分配儲存空間,而是由系統根據程式的需要即時分配,且分配的大小就是程式要求的大小。

動態分配就是指在程式執行中可以隨意分配記憶體的意思,size還是要指定的

4樓:

malloc 可以根據程式中的某一變數動態分配記憶體的

5樓:神奇浪漫

這個函式本來就是人為 分配記憶體大小。

6樓:匿名使用者

動態記憶體分配就是指在程式執行的過程中動態地分配或者**儲存空間的分配記憶體的方法。動態記憶體分配不象陣列等靜態記憶體分配方法那樣需要預先分配儲存空間,而是由系統根據程式的需要即時分配,且分配的大小就是程式要求的大小。

從以上動、靜態記憶體分配比較可以知道動態記憶體分配相對於靜態記憶體分配的特點:

1、不需要預先分配儲存空間;

2、分配的空間可以根據程式的需要擴大或縮小。

(你可看下百科,弄清楚動態分配和靜態記憶體的概念)

c語言:都是動態分配記憶體,malloc和new有什麼區別?malloc分配的記憶體是連續的嗎?new分配的記憶體不連續嗎?

7樓:李磊

malloc和free函式是c語言中的函式,是剛開始的時候c就有的,new 和delete是後來c++對c語言記憶體管理的擴充。他們都是連續空間。

8樓:

malloc是c語言的分配記憶體介面,new操作會在分配記憶體的情況下再呼叫建構函式對記憶體塊進行初始化,malloc和new都是從堆中分配記憶體,所以都不能保證分配的記憶體是連續的。

9樓:獨孤影

其他答案中的2樓是錯的,我的實踐證明malloc在少量記憶體分配是是連續的,可以用陣列的方式呼叫,但是在大量記憶體分配時卻不是連續的,若用陣列的方式遍歷的話,程式會崩潰。總之,malloc不能保證分配的記憶體是連續的。

10樓:匿名使用者

對於內建的型別,malloc和new的作用是相同的,分配的都是連續的空間

在碰到class之類的自定義型別裡,用new時,會自動呼叫類的建構函式,用delete會自動呼叫類的解構函式,如果用free,則無法執行相關的操作

new 是c++裡的關鍵字

如果用c++語言,建議用new

11樓:

malloc才是c語言的,new是c++用的,不知道你說的到底是哪個語言.

c語言:都是動態分配記憶體,malloc和new有什麼區別?malloc分配的記憶體是連續的嗎?new分配的記憶體不連續嗎

12樓:奶瓶君

(int *)malloc(sizeof (int) * 10);就是連續的,相當於陣列,一個個建立就不是了,

new可以給資料型別分配一個新結點並返回一個指向新分配記憶體區的首地址. 也可以對它進行初始化.中括號中的 size 可以分配尺寸大小.

c語言為字元指標(char*)分配動態記憶體空間(malloc),為什麼空間不發生變化 10

13樓:匿名使用者

char*是指標,你獲取指標(地址)的長度,32位機器當然是4。

c語言malloc分配出來的記憶體是不能通過sizeof獲取長度的。

c語言指標動態記憶體分配問題

14樓:風雨也無晴

是的,int p;就給p分配了4位元組記憶體,只不過這個記憶體裡沒有資料;int p =4;才向裡面賦了資料

這是系統決定的(你返回特定的型別的話,其他指標型別怎麼用?)是的malloc(4)分配了四個位元組的空間,並返回這個空間的首地址!把首地址強制轉換為int *;然後賦值給p,於是p就指向了這個4位元組空間

純手打,希望能幫到你!

15樓:春天史努比

你的理解基本是對的,需要補充的是靜態記憶體不用你自己釋放,而動態記憶體用完了是要你自己用free釋放掉的。

malloc函式是通用的,它只負責分配空間,不會返回特定的型別,由使用者自己用強制型別轉換申明所需要的型別

是的地址不是資料,地址就像你家的門牌,而它所代表的房子才是真正的「容器」

c 問題關於char的動態分配記憶體

你程式 邏輯bai 有問題。dustrlen是求字串zhi長,字串必須以 0 結束,你的字dao符沒有回以這個字元結束,因此求答得的結果是不確定的。不一定是16。下面,給你一個正確的例子了。char a a new char 10 a 0 a a 1 b a 2 0 int temp strlen ...

c 怎麼動態分配陣列並賦值,C 怎麼動態分配一個陣列並賦值

在c 中 大家可能都會使用new關鍵字來 在堆中 動態分配 方法是 int arr new int 變數或數值 可以動態分配指定長度的陣列 在c語言中要使用 malloc calloc 來進行分配 如果要賦值的話可以在申請完記憶體後 使用迴圈進行賦值也可以使用c庫中提供的記憶體操作函式 memset...

c 中進行動態記憶體分配後怎麼儲存該記憶體中的資料呢

c語言中動態分配和撤銷記憶體採用malloc和free,c 中採用new和delete,雖然c 相容c,也可以用malloc和free,但他們是庫函式,而new和delete是運算子,執行效率要高,所以建議c 中記憶體分配用new和delete。如果記憶體申請成功,new運算子返回一個指向所申請的記...