关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

首页/
已采纳
C语言什么是释放内存啊?
收起
- 写回答
- 好问题 0 提建议
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除 结题
- 收藏 举报
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
尤里安龙卷风 2017-08-02 06:14关注计算机有个叫操作系统的东西,你写的程序是由这个操作系统来管理的。操作系统不但管你程序的执行过程,还管你程序其他有关的资源,比如环境配置、内存空间之类的。
计算机给你程序分配的内存你的程序才能用,不归你的你就不能用,否则一个程序可以用其他程序的内存,不但不安全,而且很容易乱套的
回到你问的问题,你的程序要用到动态空间就必须提前向操作系统申请一个内存空间。用完了这个内存空间就必须向操作系统申请释放空间,否则不释放的话你的程序用的空间越来越多,内存就这么大其他程序就没有空间用了。
那比如申请了一个内存空间a,这个时候A指针和B指针都指向了a。然后用A指针想操作系统申请释放了空间,也就是说把这个内存空间还给了操作系统,操作系统就可以把它再分给别的程序,你这个程序就不能再用了。所以你用B指针再去访问那个空间的时候,那个空间已经不属于你了,就会出现上面说的错误。如果还要申请动态内存的话就继续向系统申请,不够是不是原来那个内存地址就不一定了。本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 11无用举报微信扫一扫
点击复制链接分享
编辑预览轻敲空格完成输入- 显示为
- 卡片
- 标题
- 链接
评论按下Enter换行,Ctrl+Enter发表内容
编辑
预览

轻敲空格完成输入
- 显示为
- 卡片
- 标题
- 链接
报告相同问题?
提交
- 2021-01-08 13:29回答 7 已采纳 对于第二个问题可以分为两个子问题来回答。 1) 可以用sizeof获取数组大小吗? 可以也不可以。数组本质上只是连续存储空间在内存中起始点的标识,C语言中数组是可以获取大小的,但数组可以隐式退化为
- 2021-07-31 10:57回答 2 已采纳 stu s1已经分配内存了,get返回的是值,不是指针,因此你free的不是一个指针变量。
- 2022-03-06 14:50回答 3 已采纳 链表用的就是这个指针,你不应该在插入的时候free的才是对的,但是你应该free是在链表删除一个节点或者删除的时候依次free掉这里的内存。 你得代码能过? 第一次用while的时候 你的n没有初始
- 2024-05-22 00:55Code repairman的博客 C语言什么是内存越界?什么是内存泄露?⼆者是如何产⽣的?
- 2021-12-17 14:31回答 2 已采纳 import datetime import time as t def fun(i10): l = [1, 2, 3, 4] a = [1, 2, 3] for j in
- 2022-08-31 07:52回答 1 已采纳 只要释放了,肯定就不在了所谓释放内存,就是程序告诉操作系统,归还之前申请的内存空间的控制权。只有拥有控制权的程序才能修改内存信息。一旦释放,操作系统随时可能将这块内存分配给其它程序或本程序的其它模块
- 2019-10-27 09:12回答 3 已采纳 1.如果你申请(malloc、calloc、realloc)的内存空间是在某个函数之内,那么只要主程序没有结束,其申请到的 内控空间就不会被释放,即使该函数return(除非free该空间地址)。
- 2021-05-22 09:17lihaiyan0001的博客 讨教怎么样为C语言的结构体数组分配/释放内存?谢谢structemp{charname[10];floatsalary;};intmain(intargc,char*argv[]){structemparray_emp[1000000];解决方案2...
- 2021-12-02 18:49回答 2 已采纳 你判断p[0],和p[1] 是否为空, 为空时才可以重新申请内存。 释放内存时吧这p[0]和p[1] 指向null, 这样不就行了?
- 2023-01-14 12:33回答 3 已采纳 应该叫C++为什么释放对象内存后还能访问类成员函数.*因为你的对象内存中只存储一个虚函数表指针, 如果有成员对象则还会存储成员对象.*delete只是释放虚函数表指针和成员对象, 所以调用成员对象或虚
- 2023-04-17 14:08回答 6 已采纳 当一个函数运行完毕后,其内部定义的变量和数组等数据都会被存储在栈内存中,随着函数的结束而被收回。执行完毕的函数的栈帧将从堆栈中弹出,以便为其他函数腾出空间。如果函数返回一个指向数组首地址的指针,那么在
- 2020-09-03 02:32在C语言中,内存管理是编程过程中的关键环节,它涉及到如何有效地分配和释放内存,以确保程序的正常运行和资源的有效利用。本篇文章将深入探讨C语言中的内存分配问题,特别是关注内存泄漏以及如何使用malloc和指针来...
- 2021-01-08 14:06^^不加糖^^的博客 C语言—内存的管理和释放一、Linux下内存分配管理1.编译好的C程序文件分区2.C程序运行时内存分区3.为什么要进行内存分配4.内存分配方式二、详解堆和栈1.堆和栈的简介2.堆和栈的区别三、内存管理函数四、其它知识1....
- 2021-05-22 06:52DeepTech深科技的博客 #include//记录分配的内存地址大小、地址struct MEM {void *p;int size;};typedef struct LinkNode {struct MEM *pmem;//保存指针struct LinkNode *pNext;//指向下一个节点} node,*PNODE;PNODE phead;PNODE findit...
- 2021-05-24 18:57杏花朵朵的博客 首先我们来科普一下:什么是堆?说到堆,又忍不住说到了栈!什么是 栈?1、什么是堆:堆是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化...
- 没有解决我的问题, 去提问
联系我们(工作时间:8:30-22:00)
400-660-0108kefu@csdn.net在线客服
- 京ICP备19004658号
- 经营性网站备案信息
公安备案号11010502030143
- 营业执照
- 北京互联网违法和不良信息举报中心
- 家长监护
- 中国互联网举报中心
- 网络110报警服务
- Chrome商店下载
- 账号管理规范
- 版权与免责声明
- 版权申诉
- 出版物许可证
- ©1999-2025北京创新乐知网络技术有限公司