我有小班包含 char* 成员(简化):
`class BytesEntity {
public:
// ... some other memeber...
char* data;
BytesEntity();
BytesEntity(int i);
BytesEntity(const BytesEntity& b);
BytesEntity& operator=(BytesEntity&& other) noexcept;
BytesEntity& operator=(const BytesEntity& other);
BytesEntity& operator=(BytesEntity other);
};`
现在,另一个函数创建对象并返回指针:
`BytesEntity\* ByteWriter::createBytesEntity(string characterString)
{ BytesEntity* byteEntity = new BytesEntity();
byteEntity->data = new char[characterString.length()];
for (int i= 0; i < characterString.length(); i++) {
byteEntity->data[i] = characterString[i];
}
//memcpy(byteEntity->data, characterString.data(), characterString.length());
cout << "byteEntity->data:" << byteEntity->data[0] << endl;
return byteEntity;
` 在另一个地方调用函数。不是主线程,线程工作者之一:
` BytesEntity* be2= ByteWriter::createBytesEntity("foo");
cout << "be2->data[0]:" << be2->data[0] << endl; `
结果出现以下错误:在 AVP_Main_Project.exe 中的 0x00007FF724A8FD74 抛出异常:0xC0000005:访问冲突读取位置 0xFFFFFFFFFFFFFFFF。
没有构造函数(默认值除外)或赋值重载被调用。
我希望在创建对象后能够使用内部“数据”成员。 我可以在正确创建它的同时使用它。使用 memcpy 结果相同
我在这里错过了什么?
谢谢!