c语言 - 在 typedef 结构中声明的 malloc char 数组



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

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

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

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

但它给了我错误:

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

如何对字符数组进行 malloc

不能从结构定义中调用函数。 相反,您应该简单地保留第一个结构定义,其中包含大字符串,然后在要创建一个时执行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;
}

您需要使用指针类型,请考虑以下代码:

#include <stdlib.h>
#include <string.h>
typedef struct {
int longSize;
char * hello;
} p_msg;
int main()
{
p_msg msg;
//zeroing memory to set the initial values
memset(&msg, 0, sizeof(p_msg));
//storing the size of char array
msg.longSize = 260000;
//dynamically allocating array using stored value
msg.hello = (char *)malloc(msg.longSize);
//using msg struct in some function
int retVal = someFunc(&msg);

//free hello array after you don't need it
free(msg.hello);
msg.hello = 0;
}

相关内容

  • 没有找到相关文章

最新更新