C 如何在棧上開闢空間

2021-10-24 18:24:02 字數 524 閱讀 7027

new operator的作用:首先會在堆上開闢一段空間(呼叫的是operator new函式)

然後呼叫new operator後面的typename的建構函式(如果是普通型別則不需要)

最後new operator typename會返回乙個指向該堆的記憶體位址.

如果想要在棧上呼叫new operator:需要做的就是不讓new operator呼叫operator new函式

而是自己在棧上開闢好一段空間,然後通過呼叫placement new(是operator的過載)講該空間的位址傳入.

申請方式

stack:

由系統自動分配。 例如,宣告在函式中乙個區域性變數 int b; 系統自動在棧中為b開闢空間

heap:

需要程式設計師自己申請,並指明大小,在c中malloc函式

如p1 = (char *)malloc(10);

在c++中用new運算子

如p2 = (char *)malloc(10);

但是注意p1、p2本身是在棧中的。

堆上記憶體四大開闢函式 和棧上記憶體開闢函式

include include include alloca函式的標頭檔案 int main p2 int calloc 3,sizeof int 第乙個元素是元素的個數,第二個元素是元素的大小。記憶體初始化為0 printf p n p2 for i 0 i 3 i p3 int realloc ...

dd windows 如何在Windows上dd?

dd windows ddis a handy tool on linux.but is it possible to run it on windows?dd是linux上的便捷工具。但是可以在windows上執行它嗎?i find theddin cygwin works very well f...

如何在細節上提高

所謂如何在細節上提高,就是我關注的就是能如何把自己的事情做的更加完美,也就前段時間對自己提出的嚴格要求所說的。我已經認識到了這是職業發展上面門檻,也是非常重要的一環。前幾天看書,書中提到了乙個表達邏輯的問題,就是乙個人要想把一件事情說清楚,要有兩個方面 就是說話格式上面的要求,說話要層次分明,重點突...