吉祥止止^~^ 2021-11-01 19:29 采纳率: 100%
浏览 79
已结题

VS2019传递实参时出现无法读取内存的问题,无法打开对应的文件,请问如何解决?

主函数:

for (int i = 0; i < Num; i++) {
        for (int j = 0; j < num; j++) {
            stringstream str_l, str_r;
            string sL, sR;
            //读取PGM图像文件
            str_l << "data/Daimler/" << i + 1 << "/Left/left_" << j + 1 << ".pgm";
            str_r << "data/Daimler/" << i + 1 << "/Right/right_" << j + 1 << ".pgm";
            cout << str_l.str() << endl;
            cout << str_r.str() << endl;
            sL = str_l.str();
            sR = str_r.str();
            const char* sl = sL.c_str();
            const char* sr = sR.c_str();
            process(sl, sr);
        }
    }

process函数

void process(const char* file_1, const char* file_2) {

    cout << "Processing: " << file_1 << ", " << file_2 << endl;

    // load images
    image<uchar>* I1, * I2;
    I1 = loadPGM(file_1);
    I2 = loadPGM(file_2);

.........

loadPGM函数

void pnm_read(std::ifstream &file, char *buf) {
  char doc[BUF_SIZE];
  char c;
  
  file >> c;
  while (c == '#') {
    file.getline(doc, BUF_SIZE);
    file >> c;
  }
  file.putback(c);
  
  file.width(BUF_SIZE);
  file >> buf;
  file.ignore();
}

image<uchar> *loadPGM(const char *name) {
  char buf[BUF_SIZE];
  
  // read header
  std::ifstream file(name, std::ios::in | std::ios::binary);
  pnm_read(file, buf);
  if (strncmp(buf, "P5", 2)==0) {
    std::cout << "ERROR: Could not read file " << name << std::endl;
    throw pnm_error();
  }

  pnm_read(file, buf);
  int width = atoi(buf);
  pnm_read(file, buf);
  int height = atoi(buf);

  pnm_read(file, buf);
  if (atoi(buf) > UCHAR_MAX) {
    std::cout << "ERROR: Could not read file " << name << std::endl;
    throw pnm_error();
  }

  // read data
  image<uchar> *im = new image<uchar>(width, height);
  file.read((char *)imPtr(im, 0, 0), width * height * sizeof(uchar));

  return im;
}

每次一运行到read header时,就显示无法读取内存,然后抛出pnm_error()错误,显示无法读取文件,具体内存区如下:

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-11-01 19:34
    关注

    21行构造file对象后,应该检查file的有效性再进行后续文件操作

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测