c 和c語言中不用專門的動態儲存分配函式就不能實現動態儲存分配了嗎?

時間 2021-05-13 06:56:48

1樓:魚叉

好像只有gcc可以,cpp標準裡沒這回事。這種還是分在棧空間,不擴棧的話一般就幾M大小,malloc在堆裡可以更大,具體可以查查linux記憶體布局。

要是這樣動態分配很容易棧不夠然後core...危險行為,常量長度棧不夠一般編譯期就會報出來。

2樓:

我在devc++裡試了先定義乙個整型a,然後對a輸入值,然後定義乙個陣列str[a],似乎編譯器也沒有檢測出不合法。

#include

#include

using

namespace

std;

intmain

()輸入 -1,程式,卒

c++和c語言中不用專門的動態儲存分配函式就不能實現動態儲存分配了嗎?

不是。不用專門的函式,用其他手段也能做到動態儲存分配。

只是 C/C++ 裡 99.9% 的場景下,動態記憶體分配都是直接或間接用的 malloc/free。

就算是 C++ 裡的非常高階的記憶體分配工具,如 operator new, std::allocator 等,他們的底層常常也用的是 malloc 這一套。

但是,如果你技術夠強的話,你也能寫出一套自己的基於棧的記憶體分配工具。C++17 給我們提供好了這一套方便的工具。比如下面這段例子,鍊錶的節點在分配時就是優先用的棧上的記憶體,棧上的記憶體分配滿了,才從堆上分配空間:

#include

#include

#include

using

namespace

std;

intmain()}

3樓:

你這個不是動態儲存分配哦

你這樣定義的陣列的生命週期還是在你的函式內,你可以試試,出了函式就用不了了。也就是說,是在棧上的,靜態的儲存空間

C 語言中 main void main 和 int main void 有什麼區別?

Cosmia Fu 為啥沒人用這種形式呢?int main int argc,char argv 我比較喜歡這一種 和int main int argc,char argv,char env Leon int main void 表示返回乙個整數值,不接收任何引數。main 按照老的C語言標準,不寫...

C語言中記憶體位址是否占用儲存空間呢?

xkyzzz 當我們只有下面這個語句的時候 int a 5 這個時候,變數a也是有乙個記憶體位址的,但是它的記憶體位址是不占用記憶體空間的。當我們再加下面語句的時候 int p a 此時,把變數a的位址賦值給了指標p,這個時候a的記憶體位址 p 是要占用儲存空間的。如果我們沒有申明指向a的指標,那a...

C語言中,break和continue都是跳出迴圈,有啥區別?

兵長喵w 一般這個年齡段都不會長久,非常困難 你們要面對的困難是 1.不小心偷嘗禁果導致懷孕 你們這個年紀,女生還好,男生16歲開始就會想做那種事情,最好是克制,畢竟這個對未成年人的身體發育是有影響的,不是未成年該做的事,留到十八歲以後或者結婚再做,否則後果不堪設想,就算用了tao也還是會有一點懷孕...