C结构的动态分配

托莫夫

我在尝试在C中动态分配结构时遇到问题:

typedef struct
{
    uint8_t wifiSSID[30];
    uint8_t wifiPassword[20];
}
tWifiPair;


typedef struct
{
    tWifiPair *wifiNetworks; // this needs to become an array with 2 elements
    // if I do the above like this tWifiPair wifiNetworks[1] - all works fine
}
tEEPROMSettings;

tEEPROMSettings gEEPROMSettings;

int main()
{
    gEEPROMSettings.wifiNetworks = (tWifiPair *)calloc(2, sizeof(tWifiPair));

    // .... writing to gEEPROMSettings.wifiNetworks[0].wifiSSID crashes the program, unfortunately I can't see the error, but the compiler doesn't throw any errors/warnings
}

如果此tWifiPair * wifiNetworks是静态完成的-tWifiPair wifiNetworks [1]-可以正常工作,但我需要动态执行此操作,并且可能在程序运行时进行更改。

它在嵌入式平台-ARM tm4c1294ncpdt上运行,编译器为CCS6。

您能指出我的错误所在吗?谢谢!

rjp

您需要检查的返回值calloc以确保成功。

成功时,将指向该函数分配的内存块的指针。该指针的类型始终为void *,可以将其强制转换为所需的数据指针类型,以便将其取消引用。如果函数未能分配所请求的内存块,则返回空指针。

这个参考

现在,如果calloc失败了,那就是另一个问题。

更新评论中的信息以供其他阅读:

这似乎是一个嵌入式系统,可能配置了一个小的堆。calloc确实会返回NULL,因此分配失败。根据您的编译器/链接器,您可能需要调整链接器脚本,分散文件或项目选项以更改堆大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C结构的动态分配

来自分类Dev

c动态分配结构数组

来自分类Dev

从文件C动态分配结构数组

来自分类Dev

结构中的动态分配

来自分类Dev

结构数组,动态分配

来自分类Dev

动态分配结构数组

来自分类Dev

在结构中动态分配数组-C

来自分类Dev

具有动态分配的char数组的C ++结构

来自分类Dev

使用指向结构C ++的指针创建动态分配的数组

来自分类Dev

动态分配的指向不从 C 函数返回的结构的指针

来自分类Dev

重新分配动态分配的结构

来自分类Dev

如何在C ++中删除由动态分配的数组成员组成的动态分配的结构?

来自分类Dev

为结构数组动态分配内存

来自分类Dev

动态分配结构向量的内存

来自分类Dev

分段故障动态分配的结构数组

来自分类Dev

如何制作动态分配的结构数组?

来自分类Dev

分段故障动态分配的结构数组

来自分类Dev

将动态分配的结构写入文件

来自分类Dev

在结构中动态分配**指针

来自分类Dev

动态分配结构向量的内存

来自分类Dev

动态分配结构向量内存

来自分类Dev

在循环内动态分配结构

来自分类Dev

正确释放动态分配的结构

来自分类Dev

在函数内部填充动态分配的结构

来自分类Dev

动态分配多个结构的数组

来自分类Dev

我无法动态分配结构

来自分类Dev

动态分配失败?C ++

来自分类Dev

如何将double的动态分配结构和子结构的内容传输到数组?(C)

来自分类Dev

动态分配包含动态分配数组的结构体数组