访问冲突读取位置0xcccccccc
Access violation reading location 0xcccccccc
我正在使用一个名为tArray的对象,它是一个对象数组,并且正确地执行所有其他任务。我需要使用来自对象数组的buyerName来形成字符串数组,以填充我们的新数组,然后返回它。然而,我一直得到的错误,如我的标题所述,有人知道为什么吗?到目前为止,我在我的程序上只有这种方法。由于
第一个代码块用于调用分析器类
中的方法std::string *topBuyers = analyser.topFiveBuyers();
for(int idx = 0; idx < 5; idx++)
std::cout << "Top buyer" << (idx+1) << ": " << topBuyers[idx] << std::endl;
std::cout << std::endl;
delete [] topBuyers;
代码的下一部分是所讨论的方法。
string* Analyser::topFiveBuyers()
{
const int sSize = 5;
string calcString[sSize] = {tArray[0].buyerName, tArray[1].buyerName,
tArray[2].buyerName, tArray[3].buyerName, tArray[4].buyerName};
return calcString;
}
从topFiveBuyers
返回一个指向临时变量的指针。
正确的方法是从你的方法返回vector<string>
或array<string,5>
而不是string*
。
如果由于一些非常奇怪的原因,你绝对必须返回一个指针,你就需要使用new
分配空间——伴随着它带来的所有问题,因为被调用者必须在它之后清理它。当前在函数范围内使用自动存储,不能保证在函数返回后仍然可用/可访问,因此存在访问冲突。
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 0xC0000005:访问违规写入位置0xcccccccc
- 访问冲突读取位置0xcccccccc
- 访问违规读取位置 0xCCCCCCCC.using bool & unsigned short
- C++:xxx中0x00101890处未处理的异常:0xC0000005:读取位置0xcccccccc的访问冲突
- 写入位置0xCCCCCCCC的访问冲突
- 访问冲突读取位置0xCCCCCCCC
- 链接表中读取位置0xCCCCCCCC错误
- 访问冲突读取位置0xcccccccc
- 访问冲突读取位置0xCCCCCCCC
- 访问冲突写入位置0xcccccccc
- c++访问冲突写入位置0xCCCCCCCC