社区
C语言
帖子详情
C语言,请问为什么扩展分配内存后,再释放指针程序就无法退出了?
jdjdmn
2015-09-13 05:45:34
如果没有执行扩展分配内存,程序会正常退出,但是如果执行了的话,执行到释放指针的语句,程序就动不了了,请问这是为什么呢?
...全文
189
10
打赏
收藏
C语言,请问为什么扩展分配内存后,再释放指针程序就无法退出了?
如果没有执行扩展分配内存,程序会正常退出,但是如果执行了的话,执行到释放指针的语句,程序就动不了了,请问这是为什么呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lm_whales
2015-09-15
打赏
举报
回复
引用 7 楼 u014626834 的回复:
可是我输入了11个数据,还是正常显示了呢?
1)C内存分配策略,是分配足够的内存,而不是恰到好处的内存。 2)内存越界的结果,可能是破坏为管理内存,而设定的数据结构,未必一定会抛出异常。 3)编译期间,和程序运行期间不报错,不代表程序没有错误。
赵4老师
2015-09-14
打赏
举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。 崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
www_adintr_com
2015-09-13
打赏
举报
回复
内存访问越界的后果是行为未定义的,程序可能产生这种异常,也可能产生那种异常,也可能没有异常
jdjdmn
2015-09-13
打赏
举报
回复
可是我输入了11个数据,还是正常显示了呢?
www_adintr_com
2015-09-13
打赏
举报
回复
realloc 的参数不是增加多少内存,而是增加到多少 你永远只分配 10 个 int,当数据超过 10 个就出现内存访问越界了
jdjdmn
2015-09-13
打赏
举报
回复
请帮我看看,谢谢!
jdjdmn
2015-09-13
打赏
举报
回复
#include <stdio.h> #include <malloc.h> int main(void) { int *p = (int*)calloc(10, sizeof(int)); if (!p) { printf("内存分配错误!\n"); return 0; } int *ptemp = { NULL }; int i = 0; int j = 0; printf("请输入:\n"); for (i = 0;;) { scanf_s("%d", (p + i)); getchar(); ++j; if (i % 9 == 0) { ptemp = (int*)realloc(p, 10 * sizeof(int)); if (!ptemp) { printf("上限内存分配错误!\n"); free(p); p = NULL; return 0; } p = ptemp; } if (*(p + i) == 9999) { break; } ++i; } printf("\n\n下面进行输出:\n\n"); for (i = 0; i < j; ++i) { printf("%d ", *(p + i)); } free(p); p = NULL; return 0; }
宋寒松
2015-09-13
打赏
举报
回复
说明内存分配和指针应用上出问题了。
漠北老将
2015-09-13
打赏
举报
回复
show me the code
www_adintr_com
2015-09-13
打赏
举报
回复
因为程序中有 BUG
你必须知道的495个C
语言
问题
为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空
指针
有关的东西呢? 5.16 考虑到有关空
指针
的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有...
C
语言
中
指针
动态
内存
的申请和
释放
当
程序
不需要这个变量时,就需要把申请的这块
内存
释放
掉,这就是
内存
的
释放
。往往
内存
的申请和
释放
是一起使用的,只要有
内存
的申请,就要有
内存
的
释放
,避免出现
内存
泄漏。 C
语言
指针
的申请: (1).在C
语言
中...
C
语言
指针
与汇编
内存
地址(二)
C
语言
指针
与汇编
内存
地址视频教程,该课程学习和使用过C
语言
的
程序
员都认为要做到对
指针
这一概念的透彻理解和灵活运用相当困难。本课程会详细讲解C
语言
与
指针
、以及如何查看汇编
内存
等C
语言
高级教程内容。
C
语言
中
内存
分配
第1节主要介绍
内存
管理基本概念,重点介绍C
程序
中
内存
的
分配
,以及C
语言
编译后的可执行
程序
的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。 第2节主要介绍C
语言
中
内存
分配
及
释放
函数、函数的功能,...
C
语言
—
内存
的管理和
释放
C
语言
—
内存
的管理和
释放
一、Linux下
内存
分配
管理1.编译好的C
程序
文件分区2.C
程序
运行时
内存
分区3.为什么要进行
内存
分配
4.
内存
分配
方式二、详解堆和栈1.堆和栈的简介2.堆和栈的区别三、
内存
管理函数四、其它知识1....
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章