指针数组并动态分配字符串的内存
这个问题与这个问题有关 。 我正在定义一个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
问候。