gpt4 book ai didi

c++ - 使用/不使用memcpy复制C/C++函数内部的结构

转载 作者:行者123 更新时间:2023-12-03 06:58:38 25 4
gpt4 key购买 nike

void func(struct a* para) 
{
struct b *alpha;
memcpy(&alpha, para, sizeof(para));
new_func(&alpha); //because this requires struct of type b
}
我在这里错过任何形式的初始化吗?我也尝试了“struct b * alpha {}”。还有其他方法可以在函数内部复制结构吗?如果不建议,那么有人可以告诉我如何使用memcpy方法吗?
我的设备抛出总线错误,并且由于未初始化或某些与内存相关的问题,我之前已经观察到此错误。
编辑:
struct a和struct b相同 struct a {
char alpha;
int beta;
}

最佳答案

您正在通过未初始化的指针复制数据,并且指针本身太小,因此会爆炸。一个简单的解决方法:

b alpha; // struct prefix not necessary in C++

// Note sizeof(a) not sizeof(a*)
memcpy(&alpha, para, sizeof(a));

// Presuming this takes b* arg, not b** arg as your code implies
new_func(&alpha);
请注意,如果 new_func保留该指针,则它将立即失效,即退出 func
如果所有这些只是传递一种类型的东西,但您希望它是另一种类型,则只需使用 static_cast 并为自己节省所有麻烦:
new_func(static_cast<b*>(para));

关于c++ - 使用/不使用memcpy复制C/C++函数内部的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64763743/

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