ShellExecute里面指针参数和string类的.c_str()产生Assertion failed

striveforit 2009-08-18 03:00:29
if((int)ShellExecute(NULL,"open",content.c_str(),NULL,NULL,SW_SHOW)<=32)
{cout<<"不存在该记录所链接的文件\n"; }
cout<<"已经打开\n\n";

content是string类
如果content内容是正确的文件目录时,运行正常,能正常打开链接所指文件

但是如果content内容是不存在的文件链接地址时,运行程序到
if((int)ShellExecute(NULL,"open",content.c_str(),NULL,NULL,SW_SHOW)<=32)
时跳出Debug Assertion Failed line:1044
Expression: _CrtIsValidHeapPointer(pUserData)

ps:很奇怪,我按F10单步执行时,这一段却能正常通过,并显示“不存在该记录所链接的文件”
...全文
62 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
striveforit 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 claio 的回复:]
首先,单步调试状态和运行状态是不一样的。错误是说pUserData不是有效的指向本地堆的指针。你可以改成release版本试试。

可能原因pUserData初始化得不好,但再调试状态下被优化了,所以单步没问题
[/Quote]
谢谢claio
刚刚无意中发觉,这个Debug Assertion Failed 跟ShellExecute无关,呵呵
不好意思耽误大家时间
claio 2009-08-18
  • 打赏
  • 举报
回复
首先,单步调试状态和运行状态是不一样的。错误是说pUserData不是有效的指向本地堆的指针。你可以改成release版本试试。

可能原因pUserData初始化得不好,但再调试状态下被优化了,所以单步没问题

64,682

社区成员

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

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