社区
C语言
帖子详情
关于内存出错提示的困惑
mux
2000-11-03 12:18:00
加精
我做的是用vc4.0开发的基于windows操作系统的C程序,程序总是忽然终止并弹出一对话框提示:
XXXXXXXX指令引用XXXXXXXXX内存,该内存不能为[read].
而十分不可思义的是当程序执行到调用函数的return语句时也经常出现此类情况.
哪一位高手明白怎么会事敬请多多指导,火急!火急!
...全文
203
10
打赏
收藏
关于内存出错提示的困惑
我做的是用vc4.0开发的基于windows操作系统的C程序,程序总是忽然终止并弹出一对话框提示: XXXXXXXX指令引用XXXXXXXXX内存,该内存不能为[read]. 而十分不可思义的是当程序执行到调用函数的return语句时也经常出现此类情况. 哪一位高手明白怎么会事敬请多多指导,火急!火急!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
singlerace
2000-11-13
打赏
举报
回复
很可能是返回地址被非法覆盖了。在函数中一步步跟踪,同时查看[ebp+4](返回地址的存放地址)处有没有被改掉。
老魏2006
2000-11-07
打赏
举报
回复
还有可能:堆栈出现问题
whoo
2000-11-05
打赏
举报
回复
如果仅仅是在return 是出错,可能是调用参数或调用模式引起的问题。布置你是不是调用dll的函数。
土豆
2000-11-05
打赏
举报
回复
除了他们说的以外,我想可能还有这种情况,这种情况我前两天刚碰到过,搞了我俩天。
可能在你的函数中访问内存越界了,然后函数返回的时候就会出现这种情况,并且是在return 语句以后,也就是在函数退出时出栈出错,我跟踪过,反汇编,当跟踪到pop ebp时看到ebp的值变为00000003,而这个地址在NT中是不能访问的,这是NT的隔离区的地址,我们知道ebp关系到程序中变量地址的访问。所以我觉得你也可能是这种情况。
后来我发现实我在循环中访问地址越界了。你可以检查一下,你是不是也有这种情况。
仅供参考。
ggggwwww
2000-11-03
打赏
举报
回复
你的Return是Return什么?
可单步跟一下,看看你的返回变量的指针的地址。
返回时,最好用的是全局数组返回。或是函数的入口参数给定的指针。
例如:
static char FileNameArray[80]={0};
char * GetFileName()
{
memcpy(FileNameArray,"time.log",7);
return FileNameArray;
}
or
void GetFileName(char * FileName)
{
memset(FileName,0x00,8);
memcpy(FileName,"time.log",7);
return;
}
如果你是这样写的话应该会出错:
char * GetFileName()
{
char FileNameArray[80]={0};
memcpy(FileNameArray,"time.log",7);
return FileNameArray;
}
你的函数代码是什么?
可否贴上来或Email to ggggwwww@21cn.com。
Mr_Ldh
2000-11-03
打赏
举报
回复
是不是使用了内存分配函数但没有#include <malloc.h>,或者内存模式不正确(small large or huge?)本人就犯过这样的错误。
mux
2000-11-03
打赏
举报
回复
感谢诸位指教, 小弟受益非浅
有一点需特别说明 , 本人做的C是程序, 而非C++,
程序中的确引用了一些指向文件名的字符串数组指针 , 但到执行到return处出错 ,好象与此无关
请问遇到此类问题时应从何处入手 , 是否有现成的书籍可做参考
敬请大家继续指教!
w3guy
2000-11-03
打赏
举报
回复
一般出现这样的问题原因为:
1. 使用未初始化的指针
2. 释放(delete,free)未初始化的指针
3. 使用已被释放的指针
4. 重复释放指针
关于return 时出现这样的情况可能是你的局部对象的析构函数中出现了以上错误.
Arthur_Ma
2000-11-03
打赏
举报
回复
在nt下内存分配很严格,有很多空间是系统保留的。
你的问题十有八九时指针指在了这些空间地址,管理好你的指针吧
老魏2006
2000-11-03
打赏
举报
回复
跟踪你的指针是否有效?
指针有没有初始化?
你必须知道的495个C语言问题
5.14 为什么有那么多关于空指针的疑惑?为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些
困惑
,要求它们的内部表示都必须为...
阿里云ECS
内存
充足启动程序
提示
内存
不足怎么办?
在我们日常使用阿里云ECS过程中,很可能会遇到一种现象,即自己的ECS
内存
配置明明充足,但在启动某些程序时,系统却
提示
内存
不足。实际上,出现这样的问题,一方面可能与你所运行的程序本身有关,另一方面也可能是...
eprime
提示
计算机
内存
不足,请各位前辈看看这是否是
内存
不足的原因导致
出错
- 第一原理 - 小木虫 - 学术 科研 互动社区...
这两天我用CASTEP提交服务器计算的时候,总是在任务提交一分钟后返回任务失败的信息,很是
困惑
,还请各位前辈指教另外,之前算的体系有比这需求更大
内存
的,也没出现此错误,就在这两天无论如何都是返回这个错误。...
明明还有大量
内存
,为啥报错“无法分配
内存
”?
文章来源:【公众号:开发内功修炼】目录前言底层过程分析新版本是否有所改观结论前言最近读者群里一位同学的线上服务器出现一个诡异的问题,执行任何命令都是报错“fork:无法分配
内存
”。这个问题最近出现的,前几...
C语言
内存
错误常见问题分析
… … brk开始 运行时malloc分配的堆 未初始化的数据 .bss 已初始化的数据.data 0x400000开始 代码段.text 如果你的
内存
出错
了,具体
出错
位置: 1:地址定位到其他进程了,地址不是本进程的——segment error 2:...
C语言
70,020
社区成员
243,265
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章