动态内存是由程序员手动申请和释放内存的方式,存放在内存的堆区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;
}