社区
C语言
帖子详情
关于内存出错提示的困惑
mux
2000-11-03 12:18:00
加精
我做的是用vc4.0开发的基于windows操作系统的C程序,程序总是忽然终止并弹出一对话框提示:
XXXXXXXX指令引用XXXXXXXXX内存,该内存不能为[read].
而十分不可思义的是当程序执行到调用函数的return语句时也经常出现此类情况.
哪一位高手明白怎么会事敬请多多指导,火急!火急!
...全文
251
10
打赏
收藏
关于内存出错提示的困惑
我做的是用vc4.0开发的基于windows操作系统的C程序,程序总是忽然终止并弹出一对话框提示: XXXXXXXX指令引用XXXXXXXXX内存,该内存不能为[read]. 而十分不可思义的是当程序执行到调用函数的return语句时也经常出现此类情况. 哪一位高手明白怎么会事敬请多多指导,火急!火急!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
跟踪你的指针是否有效?
指针有没有初始化?
Gtest之TEST和TEST_F宏的用法
gtest测试
gtest语法(一)TEST和TEST_F宏
TEST和TEST_F
Google Test 使用笔记(三)TEST宏初级使用
Google Test框架 TEST宏初级使用
CANoe教程 | 自动化测试功能-Test Module/Test Unit
概述 CANoe的测试模块包括Test Module和Test Unit两大组件,并且集成了TFS测试功能集(Test Feature Set)和TSL测试服务库(Test Service Library)来帮助用户实现高效的自动化测试。 TFS是CANoe扩展出来的一系列测试功能函数,包括测试报告的输出函数等。 TSL包含一系列的检测函数(Check Function)、激励函数(Stimulus Functions)、状态报告函数(Status Report Functions)以及检测控制函数(Ch
t-test,z-test原理
目录 Population & sample Population average treatment effect(PATE) Hypothesis Testing, t-test & p-value Execute t-test via Excel & Python z-test Population & sample Population是全体数据集,Sample是从Population中随机抽取的实验数据集,我们想通过sample的特征最终推断出popu
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章