百度试题 结果1 题目C语言中free(p)的作用是释放由___所指向的内存区间。相关知识点: 试题来源: 解析 答案: 1:p 知识点:知识点/基本理论/C9结构体类型与链表/C92链表T
因此,我们可以说指针p不是悬空指针,因为它包含了存储在全局内存中的变量的地址。 避免悬空指针错误 可以通过将指针初始化为 NULL 值来避免悬空指针错误。如果将 NULL 值赋给指针,那么指针将不指向已释放的内存。将 NULL 值赋给指针意味着指针不指向任何内存位置。 程序...
不是这样的,释放p,并不是指p的内存释放,而是指p所指向的内存释放,而且释放是指对所指向的内存空间不提供读写的权限而已。当你释放p所指向的内存之后,变量p中一定还存放着地址,如果所指向的内存空间被释放掉了,在*运算的话就没有权限,会提示出错。所以为避免这种错误,一般将释放掉而又没重新...
释放后指向随机地址。所以free后,如果没有新地址给指针变量,p就应该给空值NULL。否则就是“野指针”。
首先,我们用malloc开辟一个内存,用strcpy拷贝一串字符串,然后释放掉,通过断点调试进行观察! 下图可以看到,在VC6编译环境下,观察指针p的指针所指向的内容已经被strcpy后改变。 下一步free函数,我们选择F11单步介入观察,幸运的是在VC6中可以看到源代码,如下图,会进入到DBGHEAP.c文件中,会调用_free_dbg函数,继续F11介...
在调用 free 函数释放动态分配的内存后,指针 p 仍然指向这块已经被释放的内存 (指针变量 p 中仍然保存着这块内存的地址),而使用 gcc 进行编译,被释放的内存中原有的内容并未被覆盖 (前言中给出的代码对应的程序是这样,一会儿会举个反例),执行 p = p->next 后p 指向单链表的下一个结点,因此程序能正常运行...
就是通知操作系统,先前申请的指定部分的变量所使用的空间不再使用,使用权交还给操作系统,以便分配给其它程序使用。dispose(p)就是将变量p所代表的空间还给操作系统的意思(原本是向操作系统申请由本程序使用的,操作系统不会再分给别的程序使用)。
voidfree(void*ptr);void*ptr-要释放的内存块的起始地址。 这个地址必须是之前通过malloc、calloc或realloc成功分配的地址。 free函数⽤来释放动态开辟的内存。 释放ptr指向的内存块,使得操作系统可以重新利用该内存。 如果ptr为NULL或非动态内存地址,free函数不会产生错误,但也不会有任何效果。
5.内存已经被释放了,但是继续通过指针来使用 这里一般有三种情况: 第一种:就是上面所说的,free(p)之后,继续通过p指针来访问内存。解决的办法就是给p置NULL。 第二种:函数返回栈内存。这是初学者最容易犯的错误。比如在函数内部定义了一个数组,却用return语句返回指向该数组的指针。解决的办法就是弄明白栈上变...
p是静态的,但是指向的空间是动态分配的。p变量所占据的空间是无法被释放的,只有在函数运行结束之后由操作系统来进行释放,而动态分配的内存地址空间我们程序员是可以来手动释放的。 free(p); 这段代码的意思就是将p指向的内存空间释放掉,因为p指向的内存地址空间是动态分配的。但是p这个变量本身是无法由程序员释放的...