提交矢量列表的问题
Issue to file a vector list
>我正在使用结构向量来创建一种最小的文件系统。入口点是由MTP管理的文件系统结构,但它包含大量数据,并且即使在高级别也迫使我部署mtp内容。
我所做的是解析MTP提供的文件列表并提交结构向量。
这是我在 cpp 文件中的内容
std::vector<FileObject*> mtp_wrapper::ListsOfFirstLevel(uint32_t idx) {
std::vector<FileObject*> ListOfObjects;
LIBMTP_file_t *AllFiles;
LIBMTP_file_t *file;
AllFiles = getListOfFiles();
file = AllFiles;
while(file !=NULL) {
LIBMTP_file_t *oldfile;
FSitem = new FileObject();
if(file->parent_id == idx) {
FSitem->filename = file->filename;
FSitem->filesize = file->filesize;
if(file->filetype == LIBMTP_FILETYPE_FOLDER)
FSitem->isFolder = true;
else
FSitem->isFolder = false;
FSitem->itemid = file->item_id;
FSitem->parent_id = file->parent_id;
FSitem->lastmodified = file->modificationdate;
ListOfObjects.push_back(FSitem);
// free(FSitem)
}
oldfile = file;
file = file->next;
LIBMTP_destroy_file_t(oldfile);
}
return ListOfObjects;
}
文件对象在头文件中声明,如下所示
struct FileObject {
uint32_t itemid;
bool isFolder;
char *filename;
uint64_t filesize;
LIBMTP_filetype_t filetype;
uint32_t location;
uint32_t parent_id;
time_t lastmodified;
};
归档 FSitem 的代码工作正常,FSItem 文件正确,但在结束时,ListOfOjects 为空。 似乎push_back失败了...
ListOfObjects.push_back(FSitem);
// free(FSitem)
你为什么免费 FSItem ?你有一个 std::vector 的指针。调用 push_back 时,将指针复制到向量中的项。项目未移动且未被复制。如果释放FSItem
,则删除对象,然后向量中的指针将无效。
相关文章:
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- C++关于ENUM的问题。我得到的响应比枚举列表大
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- 在C++中循环访问自定义结构列表的小问题
- 关于Stroustrup C++书的自动和{}列表问题
- 将值推送到 getter 函数调用的列表中时出现问题
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 在 c++ 中访问列表向量时出现问题
- 有关具有编译错误的操纵列表的问题
- C++:继承和列表函数作为类成员的问题
- C++ 入门加列表:10.9 "顶部"指针问题
- 尝试使用初始值设定项列表构造"std::vector"的问题
- 自己的C++列表类实现(插入函数)出现问题
- 链接的列表字符串分类问题
- C 链接列表和总和问题
- C++有问题的函数,数组到列表
- 从一系列问题列表中生成输入(x)问题
- 析构函数问题 + 列表显示
- 显示条件有问题?(列表中的对象)
- 信号发出问题-列表视图没有显示完整的列表