关于我应该什么时候应该对malloc感到困惑

时间:2016-01-20 12:29:38

标签: c malloc

我知道如果我输入一个字符串到一个指针变量我会根据收到的输入大小malloc。

但是如果我在strchr中使用指针变量呢?例如,如果我希望指针指向字符串中的字符“z”。

char *pointer;

pointer=strchr(string,'z');

我需要malloc指针吗?或者不需要它?

4 个答案:

答案 0 :(得分:0)

您不必在此处分配任何内存。 Strchr函数返回指向字符串中char的第一个出现的指针(如果存在)。如果给定的字符串deos不包含char,则返回null。

只有在想要创建尚未创建的新内容时,才需要分配内存。在这种情况下,输入字符串存在,指针将指向此字符串中的位置。

答案 1 :(得分:0)

strchr返回指向C字符串中第一个字符的指针。

它指向一个在C字符串中搜索字符的内存位置,因此不需要使用malloc分配新内存

答案 2 :(得分:0)

使用malloc()为指针分配空间然后重新分配指针是错误的。您甚至无法对其执行指针运算,因为您无法释放它。你分配内存,然后使用该内存,指针将包含该内存的地址,如果你覆盖该地址,那么你的程序将无法访问该内存,甚至不能释放它。那么分配的内存是没用的,为此分配内存毫无意义。

答案 3 :(得分:0)

如果您需要系统为存储数据提供内存,则必须使用malloc。例如,如果要存储字符串,则应为其分配内存

++pOther

如果你只需要一个指针已经存在于内存中的东西你就不能分配它,在你的情况下char* s = malloc(10); strcpy(s, "something"); 函数会返回一个指向内存中位置的指针,其中是字符串strchr

中的字符c
s