我在一个环境中写作,我不允许在程序启动后分配新内存,也不允许我进行操作系统调用.在追踪页面错误错误(可能是由于无意中违反了上述之一)时,问题就发生在我身上了(因为这个位于我的stt字符串中)
是在堆栈还是堆上分配的全局/本地结构?例如:
如果此声明在全局范围内
struct symbol {
char blockID;
int blockNum;
int ivalue;
double fvalue;
int reference;
bool isFloat, isInt, isRef;
int symbolLength;
} mySymbol;
Run Code Online (Sandbox Code Playgroud)
分配的内存在哪里?
它是实现定义的(C++标准并没有真正谈论堆栈和堆).
通常,具有静态存储持续时间的对象(例如全局变量)将最终位于地址空间的特殊段中,该段既不是堆栈也不是堆.但具体情况因平台而异.
在C++中,与C#struct不同,几乎没有差异class.A struct是class其默认可见性是公开的.分配是在堆栈上还是在堆中执行取决于您分配实例的方式
class A;
void f()
{
A a;//stack allocated
A *a1 = new A();// heap
}
Run Code Online (Sandbox Code Playgroud)