动态内存是由程序员手动申请和释放内存的方式,存放在内存的堆区heap(链表)
⚠️注意: 不同风格的动态内存申请和释放不能混用 malloc用free、而new用delete
⚠️注意: 动态内存申请后需要及时释放,否则会造成内存泄露
C风格:malloc-free
#inclued <stdio.h>int main(){int *p = malloc(sizeof(int)); //定义并分配动态内存*p = 10; //给指针赋值printf("%d", p); //输出地址printf("%d", *p); //输出值free(p); //释放动态内存}/*注:c风格的动态内存分配,在c++中使用可能导致编译器警告可以使用以下方式消除警告*/#inclued <iostream>using namespace std;int main(){int *p = malloc(sizeof(int)); //定义指针并寻找一块 sizeof(int)大小的的内存-的地址if(p)*p = 10; //给指针赋值(在使用前用if判断)printf("%d", p); //输出地址printf("%d", *p); //输出值free(p); //释放内存return 0;}
C++风格:new-delete
#inclued <iostream>using namespace std;int main(){int *p = new int; //定义指针并寻找一块 int 大小的的内存-的地址*p = 10; //给指针赋值cout << p << endl; //输出地址cout << *p << endl; //输出值delete p; //释放内存return 0;}
