c++ - 在 C++ 中使用 memcpy 将结构写入 char 数组

标签 c++ arrays struct memcpy

我正在学习用 C++ 进行内存管理。 假设我有一个 C++ 中的 char 数组

char **arr = new char*[16];
for (int i = 0; i<8; i ++) {
    arr[i] = new char[64];
}

现在每个 block 的大小为 64 字节。

数组的第一个索引(第一个 block )是为整数数组保留的,例如整数A[16]。 我需要将 A[16] 放入第一个,因此我使用以下代码:

memcpy(arr[0], &A, 8);

然后我需要将 Struct 信息放入 char 数组中。

struct Person{
    char name[3];
    int age;
    int s_id;
    int ssn;
};

现在这个结构体有 16 个字节,我可以将 4 个 Person 对象放在一个 block 中放入数组中。

但问题是,如何使用内存复制来实现呢?我知道如何处理整数,但不知道如何将结构存储到 char 数组中。

我认为将这些结构放入 struts 数组中然后复制到数组中会更容易。

Person* person = new Person[4];
memcpy(arr[1], person, 64);

但是这段代码崩溃了,我相信是内存问题,但调试器对此只字不提。 我想我没有连续分配内存,所以我没有正确使用 memcpy?

最佳答案

我想这里:

memcpy(arr, person, 64);

您可能打算将其复制到第一个缓冲区中:

memcpy(arr[0], person, 64);

由于 arrchar**,第一行将覆盖您的指针,而不是将数据复制到其中一个字符中缓冲区。

关于c++ - 在 C++ 中使用 memcpy 将结构写入 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27914282/

相关文章:

javascript - C++中Base64编码函数的位移位

c++ - 使用 ptime 逐日迭代

c - "Variably modified ' 变量名 ' at file scope"大小在宏中定义

c - 如何更新结构体中的字段?

c++ - 需要帮助理解结构,以及一些程序错误

c++ - xcode 断点未通过包含的 cpp 文件解决 - MacOS

c++ - 将python代码转换为c++

javascript - 循环数组,附加输入文本框,然后设置这些文本框的值

c - 将结构数组写入 C 中的二进制文件

c - 启动时存储的函数内部定义的本地数据在哪里