gpt4 book ai didi

c - 在结构数组内分配指针

转载 作者:行者123 更新时间:2023-11-30 15:35:55 25 4
gpt4 key购买 nike

好的,所以问题基本上就像标题一样。找不到包含所有内容的问题,所以我想我会问。

假设我想要一个如下所示的结构数组

typedef struct s_woo{
char** n;
char* x;
} t_woo;

所以我相信我应该这样做

t_woo* woos = malloc(num_woos * sizeof(*woos));

看起来很简单(并且应该阻止人们因为我使用 malloc 的习惯而对我大喊大叫)。

然后我想初始化每个结构中的内容。

直觉上我是这样做的:

for(i = 0; i < num_woos; i++){

num_ns = randomint1 / randomint2; //let's say num_ns is big, like 250-ish, average, and changes every round of the loop

woos[i].n = malloc(num_ns * sizeof(char*));
woos[i].x = malloc(num_ns * sizeof(char));
for(j = 0; j < num_ns; j++){
woos[i].n[j] = malloc(16 * sizeof(char)); // I just want 16 characters per char*
}
}

这是我的代码中的精简版本。我想知道我写的东西可能会出什么问题——就像任何可能的事情一样。我并不是在寻找任何特别的问题,只是寻找上述问题的一般问题,例如内存/堆问题、指针错误等。

省略“虚拟内存耗尽”。我的代码错误检查使用 malloc 上的包装函数,因此我非常确定不是这样。

最佳答案

更好:

 static const size_t woo_n_size = 16; 
/* To make sure you use 16 everywhere,
* also easier to change it
*/

struct woo_item {
char n[woo_n_size];
char x;
};

struct s_woo {
struct woo_item *items;
size_t size; / * optinal, to keep track of item count */
}

使用 woo_item 结构,您可以确保没有 x 没有分配 n[woo_n_size],反之亦然。您可以通过使用指定的 null 元素来关闭每个列表来记住 woo_items 的计数,或者仅将 size 成员存储在 s_woo

关于c - 在结构数组内分配指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22754009/

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