读书人

关于内存储器分配

发布时间: 2013-07-09 09:50:48 作者: rapoo

关于内存分配?
如下定义类:
class A
{
public:
vector<int> vec;
};

int main()
{
A *pa=new A;
while(1)
{
pa->vec.push_back(1);
}
}

上面pa所指的内存会在堆上分配,那么A::vec内存也是在堆上分配吗?程序会溢出,此时溢出是堆溢出还是栈溢出呢?
[解决办法]
是堆上, 访问 vec 越界的话就是堆上的溢出.
[解决办法]
vec的也是在A上分配,既然是结构体的变量,都一样处理了
这么暴力,堆溢出,vector操作这些最终都是通过malloc分配内存的
[解决办法]
堆溢出,栈是分配局部变量或临时变量的,栈的默认空间一般比较小。通常在栈上直接分配很大的内存,或多层次的递归会导致栈溢出。
[解决办法]
vector 内部有allocate的,无论在结构体内还是局部变量 都是栈长的内存
[解决办法]
堆溢出,在堆上面的溢出

读书人网 >C++

热点推荐