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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog