gpt4 book ai didi

c - memcpy 发生错误

转载 作者:太空狗 更新时间:2023-10-29 15:52:51 25 4
gpt4 key购买 nike

我尝试使用 memcpy() 函数但出现错误:

typedef struct
{
int a;
int b;
}A;

void Test(void **obj)
{
A *object=(A*)malloc(sizeof(A));

memcpy(object,*obj,sizeof(A));//program crash here
printf("a=%d\n",object->a);
printf("b=%d\n",object->b);
free(*obj);
*obj=NULL;

}
void main()
{
A *obj=(A*)malloc(sizeof(A));
obj->a=1;
obj->b=2;
Test((void**)obj);

}

通知显示:“访问违规读取位置 0x00000001”当我传递参数时是 void* obj。没有任何问题谁能帮我?谢谢

最佳答案

您已使用类型转换来掩盖代码中的错误。您需要更改:

Test((void**)obj);

到:

Test(&obj);

要点:每当您觉得需要使用类型转换时,问问自己为什么 - 在大多数情况下,这是错误的解决方案,只会掩盖更严重的问题。

注意:您可能还应该更改:

void Test(void **obj)

到:

void Test(A **obj)

因为没有充分的理由在这里使用 void **

关于c - memcpy 发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585516/

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