当前位置:首页 > 内存 > 正文

c语言释放内存的函数

  • 内存
  • 2024-06-14 14:38:56
  • 7264

一、c语言中内存释放的问题!类似于intarray[10]形式定义的数组不需要释放,因为系统会在其生命周期开始时自动分配空间,并在其生命周期结束时自动释放空间。
所谓生命周期,就是从一个变量被定义到该变量所在的函数结束执行。
二、C语言里如何使用free()释放字符串内存因为free和malloc是成对使用的,所以当使用malloc时系统就已经被告知了大小。
编辑时,系统会比较该地址是否是malloc请求的,如果不是,则不会编辑
如果是,系统就会知道On需要释放的内存量,因为当使用malloc时,系统有寄存器。
当然,适用的地址也记录下来,否则无法比较。
#include
#include
intmain()
{
int*p;
p=(int*)malloc(sizeof(int)*3);
p[0]=1;p[1]=2;p[2]=3;
p++;
//free(p);/////////既然已经通过了p++,就不再是malloc实现的地址了,所以这句话会报错
p[0]=4;
free(p-1);//这句话是正确的,因为p++之后,这里的p-1就是malloc申请的地址
return0;
另外,我问你同样的问题:
char*p1=newchar[10];
char*p2=newchar[20];
deletep1[];
deletep2[];
编辑p1和p2时,没有指定大小。你怎么知道p1是10,p2是20?
如果她不知道,她如何争取他们的释放?