如何判断指针指向的内存不可访问

每天学一点! 2018-09-12 09:25:29
举个例子:
int *p = nullptr;
p = (int*) = 10;

//这时指针有地址,但是指向的内存没有意义

printf("p指向的值为%d\n", *p); //错误

windows下可以用IsBadReadPtr函数来判断
if(IsBadReadPtr(p,1))
{
//*p 错误
}
else
{
//*p正确
}

想问问大佬们,C++有专门的判断吗,异常有吗?
...全文
1008 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
每天学一点! 2018-09-12
  • 打赏
  • 举报
回复
结账了,谢谢各位。水平不够,不会UNIX,也看不懂赵4老师的回答,我自己回去再好好学吧,还是太菜了 。 不然别人回答都看不懂了,
酷冷小少 说的跟我想表达的不是一个意思,但还是谢谢你
每天学一点! 2018-09-12
  • 打赏
  • 举报
回复
引用 9 楼 Slzde_sub 的回复:
[quote=引用 6 楼 starytx 的回复:]
你应该在避免这种情况上花功夫,而不是在出现了怎么判断上花功夫


版主真理,c++越更新越惯坏这些码农 妄想c++什么都有 然后给自己的代码错误省功夫[/quote]

谢谢版主和Slzde_sub
赵4老师 2018-09-12
  • 打赏
  • 举报
回复
MSDN98中的例子walker又名pwalk。 完整列出指定进程的内存使用情况,显示进程地址空间内容,装载哪些DLL,代码、数据、堆栈段分配在何处,可以用来检测内存泄漏,监测内存使用。http://download.csdn.net/detail/zhao4zhong1/3667896
@风轻云淡_ 2018-09-12
  • 打赏
  • 举报
回复
引用 5 楼 Slzde_sub 的回复:
同时,我楼上说的if判断在你这个代码里是没有意义的,因为你指针是野指针,不是空指针

请你把我说的话读完,我说的if判断是有前提的好么,再说你给nullptr指针赋值,编译器就过不去,出现野指针只能说明你的代码风格太不规范!
starytx 2018-09-12
  • 打赏
  • 举报
回复
你应该在避免这种情况上花功夫,而不是在出现了怎么判断上花功夫
玉生香 2018-09-12
  • 打赏
  • 举报
回复
http://zhangyafeikimi.iteye.com/blog/248822

借鉴下这篇文章,
@风轻云淡_ 2018-09-12
  • 打赏
  • 举报
回复
用之前判断一下就可以if(p){...},不只是指针,好多类型的变量用之前都要判断一下是否可用,之所以要养成定义变量之后接着初始化,不用之后要释放相应内存,然后置为空的好习惯,就是为了降低这种错误的发生率。与其想办法找这种判断函数,不如养成这种好习惯

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧