首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于内存储器分配

2013-07-09 
关于内存分配?如下定义类: class A{public:vectorint vec} int main(){A *panew Awhile(1){pa-vec.

关于内存分配?
如下定义类:
 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的,无论在结构体内还是局部变量 都是栈长的内存
[解决办法]
堆溢出,在堆上面的溢出

热点排行