【发布时间】:2016-02-16 04:41:13
【问题描述】:
我正在使用 C 和手动内存管理并玩弄我的代码,我注意到了这一点:
假设我有
int *a = malloc(sizeof(int));
int *b = malloc(sizeof(int));
int c = 10;
如果我采用这些数字并这样做:
*a = c;
然后a 将指向内存中与c 不同的不同位置,但其值为c。如果我使用:
memcpy(a, &c, sizeof(int));
同样的事情也会发生。不同的指针,相同的值。
我的问题是一个是否比另一个更可取?我知道char * 通常使用的是memcpy 或strcpy,但是对于整数呢?一般的指针呢?作业可以吗?
附: 我也知道
a = &c;
将使a 指向与c 相同的内存位置,因此具有它的值,但我想这会留下一个悬挂指针,a 所在的位置,因为free 永远不会在内存上调用@ 987654335@ 所以我不会使用它。
【问题讨论】:
-
*a = c;没有任何函数调用开销 -
memcpy一般只在不能正常赋值时使用,比如复制数组。
标签: c pointers memory memory-management