在WIN8 中运行MFC程序报错。

ZyzyH 2018-01-05 12:33:29
我用win7写了一个文本处理的MFC应用。程序在win10上面运行就出错。出错原因是我先把一个char*指针转为int型进行保存,后面要用时再通过(char*)转回来,然后就错了。如下两个语句,第一个语句运行正确,第二个语句就运行出错,求解。。
TRACE("the test string is:%s\n", testarray);-------------------------->正确执行
TRACE("the test string2 is:%s\n",(char*)((int)testarray));------------------->执行出错

是系统差异导致的吗?
...全文
435 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2018-01-07
  • 打赏
  • 举报
回复
指针大小和编译器指定的环境有关, WIN32 32位 X64 64位 为兼容编译环境可以使用 INT_PTR TRACE(_T("the test string2 is:%s\n"),(char*)((INT_PTR)testarray));-
ZyzyH 2018-01-07
  • 打赏
  • 举报
回复
果然是被截断了。感谢zgl7903,oyljerry。WIn7的char*型是4个字节,WIN8和win10都是8个字节,系统都是64位的。这是个坑,还是不要用int存储指针的好。就是指针的大小是由什么决定的有人能说清楚吗?
zgl7903 2018-01-05
  • 打赏
  • 举报
回复
int 在VS中是32位, 如果是64位系统 自然会被截断 试试 __int64
oyljerry 2018-01-05
  • 打赏
  • 举报
回复
看看转换前后,地址是否有变化

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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