指针数组并动态分配字符串的内存

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

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

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

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

我怎么能做到这一点? 请帮助。

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

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

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

当你完成字符串中的特定字符串时,你将要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 

问候。