C++ 类中的内部指针在 o 外丢失

问题描述 投票:0回答:0

我有小班包含 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 结果相同

我在这里错过了什么?

谢谢!

c++ pointers memcpy
© www.soinside.com 2019 - 2024. All rights reserved.