11.21
malloc赋值
#include<stdio.h>
int *p = (int*)malloc(4);
*p = 0;
int *q = (int*)malloc(40); //申请一段数组的空间
int i;
for(i=0;i<10;i++){
p[i]=0;
}
free(p); //释放
注意点
千万别越界,可以申请多了,但不能少了,否则电脑会卡住
一个指针指向了一块堆区空间,千万不要再指向另一块
会导致内存丢失,但还会一直占用这个空间,如果在循环中后果更严重
可用一个新的指针记录这个地址
free注意点
- free后的空间,指针就不能用了。指针指向的值被初始化了,那块内存还给系统了,但是存的地址是不变的。所以,一般指针释放后,赋值一个NULL,即空指针。所访问空间受限的的叫野指针
- 不能重复释放同一块空间
- 不能释放栈区空间(系统控制的空间)
- 一定要释放头指针
- malloc的空间程序结束时,系统会自动释放所malloc的内存
memset
将一段内存所有字节设置为0
#include<memory.h>
int *p =(int*)malloc(40);
memset(p,0,40);