首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态分配char数组和int数组的结构

动态分配char数组和int数组的结构
EN

Stack Overflow用户
提问于 2014-11-03 02:52:38
回答 1查看 1.2K关注 0票数 0

我试图使用malloc为包含char数组和int数组的struct分配内存。我将使用文件中的信息填充这两个数组,该文件的长度我事先不知道。

代码语言:javascript
复制
typedef struct bulk_data{
    int *l_bulk_pos_arr;
    char (*l_bulk_anc_arr)[10001];
}bulk_data;

我仍然在学习内存分配,但是我在这里想象的是,由于每个char数组元素的大小都是固定的,所以我不应该通过这个数组循环来分配内存。此时,我知道了我需要的数组元素的数量(n_rows)。我尝试了以下几点(显然不是同时进行的):

代码语言:javascript
复制
struct bulk_data *bulk_counts;
    bulk_counts = malloc(sizeof(bulk_data)); // 1st attempt
    bulk_counts = (bulk_data *)malloc(sizeof(bulk_data)); // 2nd
    bulk_counts = malloc(sizeof(bulk_data) * n_rows); // 3rd
    bulk_counts = (bulk_data *)malloc(sizeof(bulk_data) * n_rows); // 4th

编译时没有错误,但上面列出的尝试似乎没有正确地分配空间:

代码语言:javascript
复制
(gdb) p bulk_counts->l_bulk_anc_arr
$1 = (char (*)[10001]) 0x0
(gdb) p bulk_counts->l_bulk_anc_arr[0]
Cannot access memory at address 0x0

(gdb) p bulk_data->l_bulk_pos_arr
$2 = (int *) 0x0
(gdb) p bulk_data->l_bulk_pos_arr[0]
Cannot access memory at address 0x0

我想知道如何为这个指定的情况分配内存,但在不知道每个char数组元素中的字符数的情况下也是如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 03:09:10

l_bulk_anc_arr是指向10001 char__s数组的指针,它不是数组。

你还得为它分配内存。

代码语言:javascript
复制
struct bulk_data *bulk_counts;
bulk_counts = malloc(sizeof(bulk_data));
bulk_counts->l_bulk_pos_arr = malloc( /*some size*/ );
bulk_counts->l_bulk_anc_arr = malloc(10001);

现在,您可以使用:

代码语言:javascript
复制
(*bulk_counts->l_bulk_anc_arr)[0] = 'a';
(*bulk_counts->l_bulk_anc_arr)[1000] = '\0';

代码语言:javascript
复制
bulk_counts->l_bulk_anc_arr[0][0] = 'a';
bulk_counts->l_bulk_anc_arr[0][1000] = '\0';
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26707103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档