分类: C/C++
2008-07-05 23:10:30
int k=0;
cout<<"address of stack area: "<<&k<
}
再看一下输出结果:
address of vector: 0x3d24d0
address of vector: 0x3d24d4
address of vector: 0x3d24d8
address of vector: 0x3d24dc
address of vector: 0x3d24e0
5
address of vector: 0x3d26b0
address of vector: 0x3d26b4
address of vector: 0x3d26b8
address of vector: 0x3d26bc
address of vector: 0x3d26c0
address of vector: 0x3d26c4
address of static area: 0x436000
address of heap area: 0x3d2470
address of stack area: 0x22ff10
程序第四行定义的变量i,很明显main之外的全局变量,静态存储。
第20行的指针p申请了一个int大小的内存空间,new出来的存储在堆区。(这里忘了delete p,一定要注意)。
第23行的k,存储在栈区,
可以清楚的看到STL容器是存储在堆区的,这样方便进行push_back,insert等元素加入操作。
次小程序没做到但绝对要注意的地方:
1.new出来的东西一定要delete掉,一定一定(如果new出来的数组,用delete [] p)
2.STL容器(container)中的元素应使用迭代器(iterator)访问,而不是像C中数组(array)一样用下标(subscript),因为有的容器不支持下标,如list,养成好习惯啊。