gpt4 book ai didi

c - 复杂数据类型的内存分配

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:17 25 4
gpt4 key购买 nike

我想为下面的结构分配内存

typedef struct {
int *buffer;
int length;
int dsn;
int handle;
} myStr;

哪个是正确的?

myStr *pStr = malloc(sizeof(myStr)+lenOfBuff);

myStr *pStr = malloc(sizeof(myStr));

我在一些使用第一个的示例中看到,但对我来说似乎有点奇怪。是否必须同时为数据Buffer分配内存??

最佳答案

视情况而定。

如果创建后要改变缓冲区的长度,需要单独分配。如果没有,您可以在单个 malloc() 调用中共同分配这两个 block ,这可能会稍微更有效率。

共同分配看起来像这样:

myStr * mystr_create(size_t initial_size)
{
myStr *ptr;

ptr = malloc(sizeof *ptr + initial_size * sizeof *myStr->buffer);
ptr->buffer = (int *) (ptr + 1);
ptr->length = initial_size;
ptr->dsn = ... something ...
ptr->handle = ... something ... *

return ptr;
}

关于c - 复杂数据类型的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12281161/

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