我在处理结构中的结构数组时遇到了这个问题。我正在尝试使用 memcpy 在字典中设置条目数组。我得到了预期值和一些看似随机的整数的混合作为输出。
奇怪的是,我用一些在线编译器尝试了这段代码,它运行良好。我认为这可能与内存区域重叠有关,所以我尝试了 memmove() 但结果是一样的。
我想我可能对 dict 使用了不正确的 malloc,但我不确定。看来我不能将 malloc 用于内部数组或单个元素。如果有任何帮助,我将不胜感激。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
int i;
} entry;
typedef struct{
entry e[10];
int i;
} dict;
dict* d;
void test(dict* di){
printf("%d\n", di->i);
int k;
for (k = 0; k < 10; k ++){
printf(("%d\n"),di->e[k].i);
}
}
int main(){
entry en[10];
d = malloc(sizeof(d));
int k;
for (k = 0; k < 10; k++){
en[k].i = k;
}
d->i = 50;
memcpy(d->e, en, 10*sizeof(entry));
test(d);
return 0;
}
最佳答案
d = malloc(sizeof(d));
d
是一个dict*
; sizeof d
是 sizeof(dict*)
。看起来你的意思是 sizeof *d
。
关于c - memcpy() 和 memmove() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40924156/