c - 在 typedef 结构中声明的 Malloc char 数组

标签 c malloc

我在 typedef 结构中有一个 char 数组,它太大了(大约 260k)

#define LENGTH 260000

typedef struct {
   int longSize;
   char hello[LENGTH ];
} p_msg;

我想在这个 char 数组上使用 malloc,如下所示:

typedef struct {
   int longSize;
   char * hello= malloc(sizeof(char));
} p_msg;

但它给了我错误:

error: expected ':', ',', ';', '}' or '__attribute__' before '=' token

如何 malloc char 数组?

最佳答案

您无法从结构定义中调用函数。您应该简单地保留第一个结构体定义,其中包含大字符串,然后在想要创建结构体时执行 malloc(sizeof(p_msg))

或者您可以将其与指针一起保留在内部,并记住每次创建结构实例时都使用 malloc() 的结果初始化该指针。

如果您有一个通过指针获取结构的函数,您可以这样做:

int extMsg(p_msg *msgBuffer)
{
    msgBuffer->longSize = 12;
    msgBuffer->hello = malloc(12);
    snprintf(msgBuffer->hello, 12, "hello %d", 42);
    return 0;
}

关于c - 在 typedef 结构中声明的 Malloc char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044720/

相关文章:

c - 程序在 free() 上崩溃并显示无效指针消息

c - 在 Ubuntu 16.04 64 位中安装 ZeroMQ

c - Malloc 初始化空指针

objective-c - C/Objective-C 中 Malloc 16 字节的泄漏

c++ - 使用条件变量超时的读写器锁

c - 多维数组和传输缓冲区

c - 内联汇编中的乘法指令错误

c - `Cannot find -lmalloc`,错误 : ld returned 1 exit status

c - 反对 free_if_heap(void *ptr)?

c - malloc 如何区分占用相同空间的不同类型?