所以我知道以下代码可以使用'='并且更容易和更好,但我正在尝试更好地理解memcpy以用于更复杂的应用程序.当我使用"ptr = b"时,我得到"1"的输出,这是我所期望的.在使用memcpy时,会出现段错误.
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int *b = &a;
void* ptr;
memcpy(ptr, b, sizeof(b));
int *c = (int *)ptr;
cout<<*c<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
ptr 没有指向任何东西,所以尝试改变它指向的数据导致崩溃.
你可能想做memcpy(&ptr, &b, sizeof(b));(改变ptr自己的价值)