[英]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#不同, struct
與class
幾乎沒有區別。 一個struct
是一class
,其默認的知名度是公眾。 分配是在堆棧上還是在堆中執行取決於您分配實例的方式
class A;
void f()
{
A a;//stack allocated
A *a1 = new A();// heap
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.