此问题与this question相关联。 我正在定义一个150b的字符数组,并将字符串复制到它:
const gchar *strAuth;
gchar *strings[18][150];
strcpy(strings[0],strAuth);
这是大多数情况下的巨大内存浪费,对于某些极端情况可能不够。
正如所引用的问题所提出的那样,最好“制作一个指针数组并动态地为字符串分配内存。”
我怎么能做到这一点? 请帮助。
答案 0 :(得分:3)
您希望使用malloc为字符串分配空间,并为要分配的字符串中的每个x分配返回到gchar *strings[x]
的指针。像这样:
gchar *strings[18];
strings[0] = malloc(strlen(strAuth) + 1);
strcpy(strings[0], strAuth);
这是一个指针数组(第1行)和字符串内存的动态分配,包括空终止符(第2行)。
当您使用strings
中的特定字符串完成后,您将free
想要free(strings[0]);
(请参见同一手册页){{1}}。我建议您在释放它们之后设置任何已释放为NULL的指针。
答案 1 :(得分:-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
问候。