C ++脏字符*

Hik*_*ari 0 c++ opencv vector char

我具有此功能,用于读取目录中的照片:

vector<Mat> vImg;
Mat rImg;

DIR *dir;
struct dirent *file;
int count = 0;
std::vector<char*> arr; 

if(argc >= 2){
char* imgFolder = argv[1];
if ((dir = opendir(imgFolder)) != NULL) {
  while ((file = readdir(dir)) != NULL) {        
    std::string fn = file->d_name;
    std::string ext = StringToUpper(fn.substr(fn.find_last_of(".") + 1));
    if(ext == "JPG" || ext == "PNG" || ext == "JPEG") {
      count += 1;  
      char* itm = new char[100];
      strcat(itm, imgFolder);
      strcat(itm, "/");
      strcat(itm, file->d_name);
      printf("%s\n",itm);
      vImg.push_back(imread(itm));
    }
  }
  closedir (dir);
Run Code Online (Sandbox Code Playgroud)

问题是第一次

vImg.push_back(imread(itm));
Run Code Online (Sandbox Code Playgroud)

所有其他“ itm”都是这样弄脏的:

在此处输入图片说明

有人可以帮助我吗?谢谢!:)

Sti*_*sis 5

您的错误在这里:

  char* itm = new char[100];
  strcat(itm, imgFolder);  // <-- oops
Run Code Online (Sandbox Code Playgroud)

首先strcat应该是strcpy。否则,您将追加到未初始化的内存中。

此外,您永远不会char在任何地方删除该阵列。