簡體   English   中英

C ++臟字符*

[英]C++ dirty 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);

問題是第一次

vImg.push_back(imread(itm));

所有其他“ itm”都是這樣弄臟的:

在此處輸入圖片說明

有人可以幫助我嗎? 謝謝! :)

您的錯誤在這里:

  char* itm = new char[100];
  strcat(itm, imgFolder);  // <-- oops

第一個strcat應該是strcpy 否則,您將追加到未初始化的內存中。

此外,您永遠不會在任何地方刪除該char數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM