在C++里有delete和delete[]以区别单个变量与数组,但是C语言里只有free(),请问它是如何区别一个指针所指向的是单个变量还是一个数组呢?
char *p1, *p2, *p;
p1=malloc(20);
p2=malloc(40);
memset(p1, 'a', 20);
memset(p2, 'b', 40);
p1[5]='/0';
p=p1;
free(p); /* 它怎么知道要释放多少内存?能正确释放吗? */
p2[10]=0;
p=p2;
free(p); /* 它怎么知道要释放多少内存?能正确释放吗? */
C语言里如何使用free()释放字符串内存
int main(){ 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申请的地址 return 0;} 另外,...
C语言如何用free
int main(){ int *p = (int *)malloc(10);\/\/动态申请10字节内存空间 free(p);\/\/释放申请的内存空间 getchar();return 0;}
C语言中free函数的用法
free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。free 不管指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete\/delete [] 要方便。如在分配指针时,用的是new或new[]。在释放内存时,并不能图方便而使用free...
c语言中 free的用法~
free(p);free 不管你的指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete\/delete [] 要方便。不过,必须注意,如果你在分配指针时,用的是new或new[],那么抱歉,当你在释放内存时,你并不能图方便而使用free来释放。反过来,你用malloc 分配的内存,也不能用delete\/delete[] 来释放。
free函数的用法
一、基本用法 在使用Free函数时,需要包含头文件。其基本语法为:c void free;其中,ptr是一个指向已分配内存的指针。当不再需要该内存时,可以使用Free函数来释放它。二、使用注意事项 1. 释放的内存必须是动态分配的。通过malloc、calloc或realloc等函数分配的内存可以使用free来释放。对于栈上的内存或...
请问C语言的free如何释放空间?
你分配内存的长度在运行时库里有记录的 free会自己找到具体长度 不用程序员去关心, 所以你只调用free就可以 出错原因是不是你重复释放了? 每次free之后一定要把指针赋为NULL , 例如 free(a); a=NULL;
c 语言free函数用法
free()释放已分配内存的函数 原形:void free(void *block)功能:释放由calloc、malloc、realloc函数调用所分配的内存。头文件:stdlib.h、alloc.h 所以你上面所做的和没加free(p)是一样的额
c语言代码 如何释放资源
如果是new 出来的内存资源的话,那么就用delete释放,如果是malloc分配出来的内存资源的话,那么就用free()释放。例如:char* c = new char[20]; \/\/new 一个char类型内存的数组 char *ptr =(char*)malloc(sizeof(char)*20); \/\/malloc分配20个char类型的内存 delete c; \/\/释放c的...
C语言中free怎么用?是只能用于指针变量吗?它如果释放静态内存会有什么结...
free 只是用来释放 malloc 函数在堆上申请的空间 别的什么也干不了!用法:如 int *p = malloc (sizeof(int) * 4)free(p);
C语言 free()函数的使用规则
比如 int *a = (int*)malloc (100*sizeof(int));int *b = a, *c = a + 10;那么free(b) 和 free(a)是合法,他们的工作都是释放申请的a的内存100个int 再如用递归创建链表,node* a = (node*)malloc(sizeof(node));a->next = (node*)malloc(sizeof(node));... ...free(a...