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

时间:2013-06-11 14:45:37

标签: c pointers dynamic-memory-allocation

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

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

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

正如所引用的问题所提出的那样,最好“制作一个指针数组并动态地为字符串分配内存。”

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

2 个答案:

答案 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 

问候。