gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:50:28 24 4
gpt4 key购买 nike

我有这段代码:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com