![](/img/trans.png)
[英]In what situation am I supposed to use malloc? I'm confused by when dynamic allocation should be used in C
[英]Confused about when exactly I should malloc
我知道如果我輸入一個字符串到一個指針變量我會根據收到的輸入的大小malloc。
但是如果我在strchr
使用指針變量呢? 例如,如果我希望指針指向字符串中的字符“z”。
char *pointer;
pointer=strchr(string,'z');
我需要malloc指針嗎? 還是不需要?
您不必在此處分配任何內存。 Strchr函數返回指向字符串中char的第一個出現的指針(如果存在)。 如果給定的字符串deos不包含char,則返回null。
只有在想要創建尚未創建的新內容時,才需要分配內存。 在這種情況下,輸入字符串存在,指針將指向此字符串中的位置。
strchr
返回指向C字符串中第一個字符出現的指針。
它指向一個內存位置,它在C字符串中搜索字符,因此不需要使用malloc
分配新內存
使用malloc()
為指針分配空間然后重新分配指針是錯誤的。 您甚至無法對其執行指針運算,因為您無法釋放它。 你分配內存,然后使用該內存,指針將包含該內存的地址,如果你覆蓋該地址,那么你的程序將無法訪問該內存,甚至不能釋放它。 然后分配的內存是無用的,為此分配內存是沒有意義的。
如果需要系統為內存提供存儲數據,則必須使用malloc。 例如,如果要存儲字符串,則應為其分配內存
char* s = malloc(10);
strcpy(s, "something");
如果你只需要一個指針已經在內存中的東西你就不能分配它,在你的情況下, strchr
函數返回一個指向內存中位置的指針,其中是字符串s
的char c
char* c;
c = strchr(s, 'm');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.