chen陈丶 2018-05-08 09:11 采纳率: 33.3%
浏览 2449
已采纳

关于”读取访问权限冲突“的问题

运行时出现
引发了异常: 读取访问权限冲突。
this->data 是 0x1110112。
代码如下:

#pragma once
#include
#include
#include

using namespace std;

class CAudioRead
{
public:
CAudioRead():data(nullptr),length(0)
{
}
~CAudioRead()
{
if (data)
{
delete[] data;
data = nullptr;
}
}
void load(std::string &path);
int size() const { return length; }
short get(int pos);
private:
short *data;
int length;
};

inline void CAudioRead::load(std::string& path)
{
fstream fin;
fin.open(path.c_str(), ios::in | ios::binary);
if(fin)
{
fin.seekg(0, fin.end);
int len(fin.tellg());
fin.seekg(0, fin.beg);
char temp = new char[len];
fin.read(temp, len);
if (!fin) cerr << "failed" << endl;
data = new short[len / 2];
for (int i = 0; i < len / 2; ++i)
data[i] = *(reinterpret_cast<short
>(temp + i * 2));
length = len;
delete[] temp;
}
}

inline short CAudioRead::get(int pos)
{
if (pos < 0 || pos >= length || data==nullptr)
cerr << "failed at" << FILE << " #" << LINE << endl;
return data[pos];
}
断点显示的是return data[pos]这一行

  • 写回答

1条回答 默认 最新

  • oyljerry 2018-05-08 10:42
    关注
     inline short CAudioRead::get(int pos)
    {
        if (pos < 0 || pos >= length || data==nullptr)  {
            cerr << "failed at" << __FILE__ << " #" << __LINE__ << endl;
            return 0;
            }
        return data[pos];
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器