如 #include<stdio.h>
#include<stdio.h>
int main()
{
char a[5];
gets(a);
free(a+5);
printf("%s",a);
system("pause")
return 0;
}
输入“abcde” 输出的还是“abcde”,求解释
哦?
追答哪里面不懂就问,懂了就加分吧
谢谢你啊,编译过了,a+4 也是一样的
C语言,free函数这样用对吗?
是的,完全释放了。因为你最后释放的p,b,的指针,和申请calloc时的值是完全一样的。中间不论怎么变,但最后的地址是正确的,你申请了,两个数组,释放了两次。这个操作是可以的。
C语言中free函数的用法
free函数的用法释放ptr指向的存储空间。被释放的空间通常被送入可用存储区池,以后可在调用malloc、realloc以及calloc函数来再分配。free 不管指针指向多大的空间,均可以正确地进行释放,这一点释放比 delete\/delete [] 要方便。如在分配指针时,用的是new或new[]。在释放内存时,并不能图方便而使用free...
C语言链表每个节点最后都得free掉吗?还是只用free掉头指针就可以了...
数组是用一个malloc来的,就用一个free让它走 链表的结点是用多个malloc来的,就要用多个free把它们全free掉
C语言函数问题: free可以只释放个别单元吗,比如我定义了一个动态...
不可以,这个需求要通过移动数组元素再加上realloc()函数实现
关于C语言中free函数的问题
要free的话首先那块空间得是malloc, calloc, realloc...开辟出来的内存空间, free多少取决于当时alloc出多少.char* a = (char*)malloc(x*y*sizeof(char));\/\/开辟了x*y个char的空间,(这里是二维的,如果多维就是要多少,开多少);\/\/相当于a[x][y];\/\/但是malloc出的空间是堆区的,而数组是在...
C语言里如何使用free()释放字符串内存
由于free和malloc配对使用,malloc的时候,大小已经告诉系统了。free的时候,系统会比对一下这个地址,是不是malloc申请的,如果不是,不给释放 如果是的话,系统就知道要释放多大内存,因为malloc的时候,系统有记录的。当然了,申请的地址,也记录了的,否则,就无法比对了。include <stdio.h> include <...
c语言中,在一维数组中怎么去删除一个最后一个元素,并且释放最后一个数...
没法释放,也没法绝对意义的删除,一个办法就是设置一个pos表示最后一个元素的下标,如果想删除这个元素,只需把pos--就好,当下一次写入的时候直接在pos处添加就是了,最后一个元素被覆盖
c语言字符数组如何释放消毁?
你提问中定义方式是在函数完成前释放不了的,你定义的字符数组,放在stack空间,不能用free()试图释放堆中的内容,因为那里是一段程序运行的保证。只有使用malloc()在栈空间开辟的动态内存才能被释放!如果你后面的代码想继续用这个数组名的话,这个数组还是可以重新赋值。你可以把你用到的数据独到这个变量中就行了!你定...
请问C语言free(p)释放p所指向的动态内存后p指向哪?是NULL还是随机还是什 ...
释放后指向随机地址。所以free后,如果没有新地址给指针变量,p就应该给空值NULL。否则就是“野指针”。
C语言里用数组存指针需要释放(free)吗?
free是对应malloc的,不是malloc的不用free。因为p是声明出来的int *p,所以不用free