为什么memcpy会出现故障?

sha*_*ib_ 1 c++ memcpy

所以我知道以下代码可以使用'='并且更容易和更好,但我正在尝试更好地理解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)

Rev*_*lot 7

ptr 没有指向任何东西,所以尝试改变它指向的数据导致崩溃.

你可能想做memcpy(&ptr, &b, sizeof(b));(改变ptr自己的价值)

  • 而且,即使`ptr`指向某个东西,`sizeof(b)`也可能应该是`sizeof(*b)`. (3认同)