gpt4 book ai didi

c++ - 为什么这个 memcpy 不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:43 28 4
gpt4 key购买 nike

所以我有以下代码,这是我想做的事情的简化版本。我有一个带有成员变量的类,我想根据情况将其设置为可能的各种不同数据类型(我只是为此测试制作了一个随机结构)。不过,我一直在 memcpy 函数上遇到段错误,我不知道为什么。

 #include <cstdlib>
#include <iostream>
#include <assert.h>
#include <string>
#include <string.h>
#include <stdio.h>
using namespace std;

struct product
{
int price;
string name;
};


class object
{
public:
void setData(void *ptr);
void* data;
};


void object::setData(void *ptr)
{
assert(ptr);
memcpy(data, ptr, sizeof(ptr));
}


int main()
{
product* bag;
product ba;
bag = &ba;
bag->price = 5;
bag->name = "bag";

object test;
test.setData(bag);

cout<<test.data->name<<endl;

return 0;
}

最佳答案

您的代码有多个问题,但 SIGSEGV 的直接原因是以下行:memcpy(data, ptr, sizeof(ptr)); 尝试将一些字节复制到未分配的指针 data 中。

附带说明一下,您似乎正试图使用​​完全不合适的方法在 C++ 中实现多态性。

关于c++ - 为什么这个 memcpy 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929839/

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