[英]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.