c - 使用 memcpy 时出现段错误

标签 c malloc memcpy

我有一个关于 memcpy() 的基本问题:

我有一个结构,它有几个数组作为其成员。
我想将结构中的数据复制到缓冲内存中(通过 malloc() 分配)

我看到了段错误。我在这个实现中做错了什么吗?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX 10

struct temp {
    int en;
    int one[MAX];
    int two[MAX];
 };

int main()
{
    struct temp *cpy;
    int *buffer, i;

    for(i=0; i<MAX; i++) {
            cpy->one[i] = i;
            cpy->two[i] = i * i;
     }

   buffer = malloc(3 * MAX * sizeof(int));
   memcpy(buffer, cpy, sizeof(struct temp));
}

如何将完整的数据复制到缓冲区中?

最佳答案

cpy 只是一个未初始化的内存指针(引用)。您需要通过在 for 循环之前将其指向分配的内存来对其进行初始化。

关于c - 使用 memcpy 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26793463/

相关文章:

c - C中的除法错误

c - fgets 而不是 gets

c - 如何在失败的 realloc 中释放 malloc

c++ - 新标准中的 memcpy 生命周期初始化规则有哪些变化(如果有)?

C 编码::将结构写入内存块

c - BST 后序遍历中的打印深度

c - 从 fputs 中分割字符串

c - 静态与 Malloc

c++ - C/C++ 读取具有多个字符串和字符的二进制文件

cuda - 我在使用 CUDA 在 GPU 上复制字符时遇到问题