我正在尝试写入文件,但在删除分配的内存时出现段错误。我不明白是什么问题,请帮助:
void writeToLog(string msg) {
int len = msg.size()+1;
char *text = new char(len);
strcpy(text,msg.c_str());
char* p = text;
for(int i=0; i<len; i++){
fputc(*p, _log) ;
p++;
}
delete[] text; //THIS IS WHERE IT CRASHES
}
我也尝试过不使用 [ ]
但后来我明白了
*** 检测到 glibc *** ./s:free():下一个大小无效(快速):0x09ef7308 ***
那么问题是什么?
谢谢!
最佳答案
这个:
char *text = new char(len);
应该是:
char *text = new char[len + 1];
无论如何,这都是不必要的。你为什么要这样做?
关于c++ - 写入文件时由 delete[] 引起的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162338/