gpt4 book ai didi

c - 包含动态数组的不透明 C 结构

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

这是为包含动态数组的 c 结构分配内存的正确方法吗?特别是,我为 myStruct 分配内存的方式是否正确,考虑到尚不知道该结构实际​​有多大?

//test.h
struct Test;
struct Test * testCreate();
void testDestroy(struct Test *);
void testSet(struct Test *, int);

//test.c
#include <stdlib.h>
struct Test{
double *var;
};

struct Test * testCreate(int size){
struct Test *myTest = (struct Test *) malloc(sizeof(struct Test));
myTest->var = malloc(sizeof(double)*size);
return(myTest);
}
void testDestroy(struct Test * myTest){
free(myTest->var);
free(myTest);
}
void testSet(struct Test * myTest, int size){
int i;
for (i=0;i<size;++i){
myTest->var[i] = i;
}
}

最佳答案

struct 具有固定大小,这就是 sizeof 返回的内容。

你的结构有一个元素,一个双指针,并且有一个(依赖于平台的)固定大小。

您的 testCreate 函数可以正确执行操作。如果您不知道动态分配部分的大小,可以将指针设置为 NULL 以表示稍后必须分配内存。

关于c - 包含动态数组的不透明 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045461/

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