繁体   English   中英

memcpy()和memmove()无法正常工作

[英]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));

ddict* sizeof dsizeof(dict*) 看起来您的意思是sizeof *d

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM