引发了异常: 读取访问权限冲突

代码在x86环境下正常运行,但在x64环境下因string指针长度差异引发异常。问题定位为string指针在不同架构下地址长度不一致,导致访问冲突。解决方案可能涉及调整数据类型或线程通信方法以适应不同平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引发了异常: 读取访问权限冲突。
_Right_data 是 0xC17B1FA8。

 

附代码

#include <iostream>
#include<windows.h>
#include<process.h>
#include<fstream>

int main()
{

    std::string outputLabelPath = "sssssss";
    unsigned int iParam[4];
    iParam[3] = (unsigned int)&outputLabelPath;
    std::string *fileOutputPath = (std::string*)iParam[3];

    std::string centerFile = *fileOutputPath;

    getchar();
}


上述代码本来用于线程间通信,它在vs2017 x86的环境下没有任何问题,但是在x64环境下直接爆出:引发了异常: 读取访问权限冲突。_Right_data 是 0xB155F9D8。经过反复排查终于定位出问题所在:string * 在x86和x64环境下地址长度不一样,导致指针异常使程序崩溃,而unsigned int 地址没有任何变化。以下是不同环境下指针测试结果。

x86下32位测试结果:

 

x64下测试结果:

 

终于发现问题所在,谢谢大家。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值