[英]memcpy() and memmove() not working as expected
在结构中使用结构数组时遇到了这个问题。 我正在尝试使用memcpy在字典中设置条目数组。 我得到了期望值和一些看似随机整数的混合输出。
奇怪的是,我在一些在线编译器上尝试了此代码,并且运行良好。 我认为这可能与重叠的内存区域有关,因此我尝试了memmove(),但结果是相同的。
我想我可能不正确地将malloc用于该dict,但是我不确定。 看来我不能将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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.