【发布时间】:2013-09-18 14:58:12
【问题描述】:
我一直试图了解什么是 malloc() 以及为什么要使用它。我知道 malloc 用于动态分配内存,如果您不知道要创建多少内存,则需要它。我一直在做一些动手操作。
下面的代码声明了一个字符指针数组,第一个字符指针用“hello”初始化。这很好用。
int main()
{
char *strarray[5];
strarray[0]="hello";
printf("%s\n",strarray[0]);
return 0;
}
但是,如果我尝试使用 strcpy() 函数将“hello”字符串复制到 strarray[0](没有 malloc()),就会出现问题。它进入一些循环并且不复制字符串。如果我使用 malloc 分配内存,它工作正常。
int main()
{
char *strarray[5];
//strarray[0]=(char *)malloc(sizeof(char)*10);
strcpy(strarray[0],"hello");
printf("%s\n",strarray[0]);
return 0;
}
我想知道有什么不同?如果我可以将“hello”初始化为不使用 malloc 的 char 指针,为什么我不能用 strcpy() 做同样的事情。
【问题讨论】:
-
您在磁盘上有一个文本文件,其中包含您需要的字符串数组中的数据。每个字符串一个单词。完成后,您的数组应包含 N 个字符串,其中 N 是文件中的字数...并且它必须适用于 any 大小的文件。想想你如何不用固定长度的数组编写代码,然后问问自己内存分配函数
malloc()有什么用处。