这个问题与这个问题有关。我正在定义一个字符数组,每个字符为 150b,并将一个字符串复制到其中:
const gchar *strAuth;
gchar *strings[18][150];
strcpy(strings[0],strAuth);
在大多数情况下这是巨大的内存浪费,对于某些极端情况可能还不够。
正如所引用的问题所建议的,“创建一个指针数组并为字符串动态分配内存”是一个更好的主意。
我怎样才能做到这一点?请帮忙。
这个问题与这个问题有关。我正在定义一个字符数组,每个字符为 150b,并将一个字符串复制到其中:
const gchar *strAuth;
gchar *strings[18][150];
strcpy(strings[0],strAuth);
在大多数情况下这是巨大的内存浪费,对于某些极端情况可能还不够。
正如所引用的问题所建议的,“创建一个指针数组并为字符串动态分配内存”是一个更好的主意。
我怎样才能做到这一点?请帮忙。
您想使用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。
试试这个
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
问候。