内存与指针——动态申请内存
1、malloc
头文件malloc.h
一维内存申请:类型标识符 *变量
变量名=(类型标识符*)malloc(sizeof(类型标识符)*数组大小);
二维内存申请:类型标识符 **变量
变量名=(类型标识符**)malloc(sizeof(类型标识符*)*数组行大小);
for(int i=0;i<数组行大小;i++)
变量名[i]=(类型标识符*)malloc(sizeof(类型标识符)*数组列大小);
释放:free(变量名)
变量名=NULL;
2、new
类型标识符 *变量名;
变量名=new类型标识符[数组大小]
释放:delete[] 变量名;
变量名=NULL;
用指针强制修改常量的值本质上是修改常量所指向的内存的值,但是常量本身不会被修改
指针也可以指向结构体变量
在动态申请内存后释放内存指针的时候可能由于指针指向的位置的变化导致程序崩溃。
3、避免野指针的形成
野指针形成原因
- 指针创建之后没有初始化
- 指针在使用free()和delete()函数释放了内存但是没有释放指针
即没有令指针=NULL
- 指针创建和操作没在一个作用域