应该始终使用memcpy吗?

2 c memory pointers memory-management

我正在使用C和手动内存管理,并在玩我的代码,我注意到了这一点:

假设我有

int *a = malloc(sizeof(int));
int *b = malloc(sizeof(int));
int c = 10;
Run Code Online (Sandbox Code Playgroud)

如果我使用这些数字并执行以下操作:

*a = c;
Run Code Online (Sandbox Code Playgroud)

然后a将指向内存中与分开c但具有值的不同位置c。如果我使用过:

memcpy(a, &c, sizeof(int)); 
Run Code Online (Sandbox Code Playgroud)

同样的事情也会发生。不同的指针,相同的值。

我的问题是,一个是否比另一个更可取?我知道char *通常是使用memcpy还是strcpy使用,但是对于整数呢?一般而言,指针如何?分配可以吗?

PS我也知道

a = &c;
Run Code Online (Sandbox Code Playgroud)

a指向与它相同的内存位置c,因此具有它的值,但是我想那会留下一个挂起的指针,a因为从那时起free就从未在内存上调用它,a所以我不会使用它。

Elm*_*ise 5

在您的示例中,应该使用,*a = c;因为您只想复制一个值。使用memcpy,如果你需要复制一个数组的几个连续的单元。