Heap 堆内存
堆内存属于具有全局共享特点,大小动态变化
对象分配时,手动分配堆内存(malloc/new)
对象释放时,手动释放堆内存(delete/free)
堆上对象链式分配,非连续排列
堆内存全局共享,存在多线程竞争可能性
堆内存大小没有栈内存严格限制,与机器内存总量和进程寻址空间相关
堆内存使用指针间接访问,管理复杂度高
堆内存有很高灵活性,虽性能较差,但可通过相关设施和编程技巧精细控
制,从而获得改善。
#include#include #include using namespace std; // int data; class Point{ public: int x{0}; int y{0}; static int data; }; int Point::data{100}; int main() { int x {10}; int arr[]={1,2,3,4,5};//栈数组 auto y=20; auto s1="hello"s;//自动类型推导 string int & data=x; //栈引用 int* px =new int{10}; //堆指针对象 int* parray=new int[5]{1,2,3,4,5}; //堆数组 delete px; delete[] parray; { vector v{10,20,30,40,50}; for(auto& s : v) { cout< stack *p3=*p4;//heap->heap pt2=*p4;//heap->stack *p4=pt2;//stack->heap Point& pr1=*p3;//堆引用 Point& pr2=pt1;//栈引用 Point* p5=&pt1; //栈指针 Point* p6=&pr1; //堆指针 delete p3; delete p4; }



