c++ - 写入文件时由 delete[] 引起的段错误

标签 c++

我正在尝试写入文件,但在删除分配的内存时出现段错误。我不明白是什么问题,请帮助:

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/

相关文章:

c++ - 从 PAT 部分 (MPEG-TS) 读取信息

c++ - 如何在 Windows 上紧密打包结构?

c++ - 多平台包括最佳实践 (qt)

c++ - 在一行中调用 3 个递归?

c++ - 如何在 Xcode 中追踪 "libc++abi.dylib: Pure virtual function called!"

C++ 多态性问题。与 _vfptr 有关

c++ - 铛AST转储不显示一些全局变量

java - 对于初学者来说,如何在 Emacs 中首次启用自动完成功能?

c++ - 使用 union 推迟成员变量构造

c++ - QTextEdit中如何序列化和反序列化富文本?