我在 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/