C++ char* 到字符串运行时错误

标签 c++ string file char malloc

我有这段代码:

char* mtlBuffer = readFromBinary(myfile[0]);    
string mtlBufferStr = mtlBuffer;

if (mtlBufferStr != " ")
{       
    mtlFile.open(fileLocation + "/" + mtlBufferStr.substr(7));
    if (mtlFile.is_open())
    {
        mtlFile.seekg(0, ios::end);
        mtlLength = mtlFile.tellg();
        mtlFile.seekg(0, ios::beg);

        while (mtlFile.tellg() < mtlLength)
        {
            mtlFile.getline(mtlBuffer, 255);
            mtlBufferStr = mtlBuffer;
        }
    }
}

在线:

mtlBufferStr = mtlBuffer;

我遇到一个运行时错误:

Win32.exe has triggered a breakpoint.

这发生在 malloc 文件上。我检查了 mtlBuffer 存储的内容及其:

"# MTL written from /Users/manapoly/Desktop/Yusup/Models/Land/Lamborghini/Aventador/Aventador/Avent.obj"

奇怪的是,如果我删除这一行(并将 mtlBufferStr 与他需要包含的值进行比较):

mtlFile.getline(mtlBuffer, 255);

代码完美运行。为什么 getLine 会使程序失败?

抱歉我的英语不好。

最佳答案

线

mtlFile.getline(mtlBuffer, 255);

看起来它需要一个指向预分配字节缓冲区的指针。 “255”可能指定该缓冲区的大小。 但是我看不到您的代码中进行了任何分配。 所以我会说“getline”试图写入未分配的空间。

关于C++ char* 到字符串运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059159/

相关文章:

c++ - 从低到高组织整数并在 C++ 中使用结构

java - 正则表达式匹配单词字符,任何单词之间只有 1 个空格

java - 当我尝试打印此内容时,为什么新行会附加到我的数组元素中?

c++ - 如何判断在 Windows Mobile 6.5 中按下某个键 (c++)

c++ - 构造函数中的静态变量,有什么缺点或副作用吗?

c - 将文件中的行添加到 C 中的数组

c# - 如何在解决方案C#中获取另一个项目的绝对路径

javascript - 将文件从 Javascript 上传到 PHP

c++ - “createStereoBM”未在此范围内声明

c - c中无限字符串的strcat