gpt4 book ai didi

c - 以类似于数组文字的方式初始化 malloc 的内存?

转载 作者:行者123 更新时间:2023-12-02 07:42:08 24 4
gpt4 key购买 nike

假设我为自己调用了一些内存:

byte *header = calloc(5 + ZHEADERSIZE, sizeof(byte));

这给了我一个由 0 组成的数组。但是如果我想对内存进行自定义初始化怎么办?以下代码是对数组文字的相当详细的初始化。请注意,它实际上包含变量,所以我不能只 memcpy 整个数组。我想知道我是否可以为 malloc 出的内存块复制这种初始化方式,而无需手动插入它们。

unsigned char zhead[] =
{
0x00, 37, 0, 218, 0xFF,

0x50, 0x4b, 0x03, 0x04,
0x14,
0x00,
0x00, 0x00,
0x08, 0x00,
0x08, 0x03,
0x64, 0x3c,
0xAA, 0xBB, 0xCC, 0xDD,
csize, (csize>>8), 0, 0,
uncsize, (uncsize>>8), 0, 0,
0x07, 0x00,
0x00, 0x00,
'r', '/', 'r', '.', 'z', 'i', 'p'
};

最佳答案

除了使用 calloc 将 C 中动态分配的内存初始化 为零外,您不能。但是,您可以提供一个静态原型(prototype)数组,您可以从中复制数据:

const char prototype[] = { 'a', 'b', 'c' };

int main()
{
char * data = malloc(sizeof prototype);
memcpy(data, prototype, sizeof prototype);

data[1] = 'z'; // fill in custom data
}

关于c - 以类似于数组文字的方式初始化 malloc 的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com