1

这个问题与这个问题有关。我正在定义一个字符数组,每个字符为 150b,并将一个字符串复制到其中:

const gchar  *strAuth; 
gchar *strings[18][150];
strcpy(strings[0],strAuth);

在大多数情况下这是巨大的内存浪费,对于某些极端情况可能还不够。

正如所引用的问题所建议的,“创建一个指针数组并为字符串动态分配内存”是一个更好的主意。

我怎样才能做到这一点?请帮忙。

4

2 回答 2

3

您想使用malloc为您的字符串分配空间,并为您gchar *strings[x]要分配的字符串中的每个 x 分配它返回给您的指针。像这样的东西:

gchar *strings[18];
strings[0] = malloc(strlen(strAuth) + 1);
strcpy(strings[0], strAuth);

这是一个指针数组(第 1 行)和动态分配内存的字符串,包括空终止符(第 2 行)。

当你在 中处理完一个特定的字符串后strings,你会想要free它(参见同一个手册页)free(strings[0]);。我建议您在释放它们后将任何已释放的指针设置为 NULL。

于 2013-06-11T14:56:48.247 回答
-1

试试这个

gchar *strings[18];
strings[5] = (char*)malloc(sizeof(gchar)*150); //to reserve space in memory
strcpy(strings[5],strAuth);
free (strings[5]); // to delete used buffer 

问候。

于 2013-06-11T14:50:43.447 回答