簡體   English   中英

全局結構是在堆棧上還是在堆上分配的?

[英]Are global structs allocated on the stack or on the heap?

我在一個環境中寫作,我不允許在程序啟動后分配新的內存,也不允許我進行操作系統調用。 在追蹤頁面錯誤錯誤(可能是由於無意中違反了上述之一)時,問題就發生在我身上了(因為這個位於我的stt字符串中)

是在堆棧還是堆上分配的全局/本地結構? 例如:

如果此聲明在全局范圍內

struct symbol {
    char blockID;
    int blockNum;
    int ivalue;  
    double fvalue;
    int reference;
    bool isFloat, isInt, isRef;
    int symbolLength;
} mySymbol;

分配的內存在哪里?

它是實現定義的(C ++標准並沒有真正談論堆棧和堆)。

通常,具有靜態存儲持續時間的對象(例如全局變量)將最終位於地址空間的特殊段中,該段既不是堆棧也不是堆。 但具體情況因平台而異。

在C ++中,與C#不同, structclass幾乎沒有區別。 一個struct是一class ,其默認的知名度是公眾。 分配是在堆棧上還是在堆中執行取決於您分配實例的方式

class A;

void f()
{
 A a;//stack allocated
 A *a1 = new A();// heap
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM