为结构体保留内存空间时
When memory space is reserved for struct?
内存空间是保留在下面的结构体声明或当我们创建该结构体的对象?
struct student
{
int marks;
float average;
};
当您这样声明struct
时,没有为该结构分配内存。但是,您可以声明struct
和立即定义该类型的变量,如下所示:
struct student
{
int marks;
float average;
} var_name; // Reserves the memory in the global/static space
您也可以在自动空间(局部变量)中定义变量,或者使用new
在动态空间中定义变量。
通常在创建定义时应该是这样的。因为你可以声明一个结构体的实例而不定义它(可能在头文件中使用extern),除非实例被定义,否则不会为实例使用空格。
但是,编译器可以选择从程序中剥离不实际使用的对象。有时,编译器可能会过于热心,将根本没有引用但实际上执行重要操作(如某种注册)的对象剥离。
相关文章:
- 为异步发送缓冲区保留内存(提升 asio 套接字)
- 为什么共享内存(在IPC中)不需要上下文切换?这是内核空间的内存,可以映射到用户空间
- std::vector<std::vector<int>>:调试断言失败。C++矢量下标超出范围保留内存
- 如何在Windows和更高版本上保留内存,并将文件映射到内存中
- 结构中的C++数组指针保留内存位置,但丢失所有值
- 是否更正PInvoke签名以使用带有C#保留内存的嵌套结构
- C++ - 关闭应用程序后保留内存
- 进程如何访问不属于其虚拟地址空间的内存映射 IO 地址?
- 如何在 Windows 映射程序的 DLL 之前保留内存区域?
- 需要释放具有保留内存的 c++ Do 局部变量
- (C++)循环:不保留内存的用户输入
- OpenCL:减少示例,并保留内存对象/将cuda代码转换为OpenCL
- 如何为向量的向量保留内存
- 为结构体保留内存空间时
- 如何在构造时为std::vector保留内存?
- 如何为一个非常大的筛保留内存?
- 平衡文件空间,内存访问和写入速度的结构数组到文件
- 在堆中保留内存错误
- 为什么std::deque不是一个在索引0之前保留内存的向量
- 如何判断已提交内存和保留内存中的内容