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 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL