C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
in C++, is stack allocation is more efficient when allocating multiple data inside a object? class A_Heap will be less efficient in below program?
/* 我有两个类。一个是在堆栈上为其成员分配内存,而另一个是在堆上分配内存。请参阅下面的代码片段。
class A_Heap {
public:
A_Heap()
{
ptr = new char[256];
int_ptr = new int[1024];
}
private:
char * ptr;
int * int_ptr;
int abc;
char ch;
};
class A_Stack {
public:
A_Stack()
{
}
private:
char ptr[256];
int int_ptr[1024];
int abc;
char ch;
};
/*类A_Heap的效率会降低,因为在堆上分配内存会导致从用户模式到内核模式的两次上下文切换? */
在C++中,堆栈分配是否更有效率...?
是的,就时间而言。
就堆栈使用而言,通常不会,原因很明显。
。在一个对象内分配多个数据时?
还是的。
请注意,从绝对值来看,分配成本可能很小。因此,这种效率差异是否显著,可能取决于您执行的分配数量。
请注意,A_Stack
是一个非常大的对象。它们中只有极少数适合通常大小的堆栈,并且该空间与所有其他自动变量共享。如果不小心处理,在堆栈上创建此类对象可能会导致堆栈溢出的高风险。
您可以做的是动态分配单个A_Stack
对象。这最大限度地减少了动态分配的数量,同时仍然不会占用所有堆栈空间。
相关文章:
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 在程序变得低效之前,允许多少新的[]和删除[]分配是否有限制?
- C++程序什么都不做,但瓦尔格林德显示内存分配
- 任务管理器 - C/C++ 应用程序 - 分配的地址空间与已用内存
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 在不释放所有动态分配的资源的情况下结束程序是否有风险
- shared_ptr的删除程序是否存储在自定义分配器分配的内存中?
- 我应该在这个程序中使用静态内存分配还是动态内存分配
- C++ 错误的分配应用程序失败
- C++程序无法分配 int 数组?
- 我的移动分配操作程序重载的分段错误
- 使用没有堆内存分配的接口的框架应用程序?
- 程序终止,状态为 -1073741510 在 for 循环的中间,将输入分配给二维数组
- 如何将 QML 文件分配给主窗口/应用程序
- 我的程序运行良好,可以复制对象,但是当我使用复制分配(=)时,它仍然可以正常运行.为什么不给错误
- 将数据分配给了数组分配,但程序显示了以缓冲区超支的输出
- 在C++容器中,作为模板参数提供的分配器和作为构造函数参数提供的分配程序之间的区别
- C++动态分配程序崩溃
- 为Fortran可分配程序在C中分配内存
- C++编程分配程序以信号11终止