程序在打印字符串矢量时崩溃
Program crashes at printing string vector
我正在制作一个写入和读取"提醒"的程序,当我打印带有"提醒"的字符串向量时,它会崩溃,我不知道为什么会发生这种情况,它可以编译,但它在运行时崩溃,感谢任何试图提供帮助的人。代码如下:
vector<string> v = ReadFile();
for(vector<string>::iterator i = v.begin();i != end();i++) {
cout << *i << 'n' << endl;
}
代码的另一个"版本"也会崩溃:
vector<string> v = ReadFile();
for(int i = 0;i < v.size();i++) {
cout << v[i] << 'n' << endl;
}
抱歉,如果退出另一个具有相同问题的线程。
PS:我正在使用MinGW作为编译器
在此处完成代码:
#include <iostream> // Basic IO
#include <fstream> // File IO
#include <stdlib.h> // free()
#include <vector> // For using vectors
#include <string> // For strings
#include <dirent.h> // Read files from folders
#include <windows.h> // GetCurrentDirectory()
void WriteFile(string desc) {
ofstream write(desc.c_str());
write << "Created on: " << __DATE__ << " " << __TIME__ << "n";
write.close();
printf("nReminder saved with success");
}
vector<string> ReadFile () {
vector<string> reminders;
DIR *dir;
struct dirent *ent;
LPSTR buffer;
GetCurrentDirectory(MAX_PATH, buffer);
if((dir = opendir(buffer)) != NULL) {
while((ent = readdir(dir)) != NULL) {
reminders.push_back(ent->d_name);
}
closedir(dir);
free(dir);
free(ent);
free(buffer);
} else {
printf("nError at reading folder or empty folder");
}
return reminders;
}
int main() {
vector<string> v = ReadFile();
for(int i = 0;i < v.size();++i) {
cout << v[i] << 'n' << endl;
}
return 0;
}
这是一个问题:
LPSTR buffer;
GetCurrentDirectory(MAX_PATH, buffer);
LPSTR
是char *
的typedef,或类似的东西。但是,GetCurrentDirectory
函数希望传递已分配的缓冲区。更改为:
char buffer[MAX_PATH+1]; // or TCHAR
GetCurrentDirectory(sizeof buffer, buffer);
另外,您不应该打电话给free(buffer)
,因为您没有malloc
它。
我相信free(ent);
和free(dir);
也是错误,因为这些函数将指针返回到由运行时库管理的内存中。 一般来说,只对你错误的事情调用free
,或者函数的文档告诉你你需要free
。
相关文章:
- 为什么我的结构在包含字符串时崩溃?
- 当 getline 用于获取整个字符串时,程序崩溃
- 删除动态字符串时程序崩溃
- 当 JSON 值应为 INT 但以字符串类型发送时,RapidJSON 崩溃
- 从数组比较2个字符串时,程序崩溃
- C 通过char读取文件字符串的文件char;崩溃
- 使用字符串而不是字符数组时程序崩溃
- 返回向量<对<字符串,字符串>>会导致 gcc 编译代码 (curlcpp) 崩溃
- 矢量尝试添加字符串时会崩溃
- 从CSV文件读取时,试图将值插入一个字符串中时崩溃
- 清理所拥有的(!)字符串成员时,析构函数偶尔崩溃
- 程序使用SCANF读取字符串时会崩溃
- 在执行字符串时更改字符会使程序崩溃
- 程序在输入 10 个字符串后崩溃
- o字符串流对象创建导致我的程序崩溃
- p = new String [0]和p = new Int [0]之后,为什么当删除[] p时字符串版本崩溃
- C++:使用 LSD 基数排序字符串排序崩溃
- jvm在尝试将TCHAR类型发送到接受字符串作为参数的java函数时崩溃
- Google protobuf在解析字符串数据时在Android中崩溃
- 崩溃:字符串问题