2011-11-24 48 views
-1

我們假設我有一個要保存1000字節的char變量。如何正確使用malloc?

char var[1000]; 

我該如何使用malloc來分配那麼多內存?

我試過上的malloc閱讀了,但即使ķ& [R似乎並沒有對它有很多信息。

+0

爲什麼downvote? – dikidera

+4

「K&R似乎並沒有對它有太多的信息」 - 看起來你已經閱讀不同的書籍:) – codaddict

+0

你認爲[這個問題](http://stackoverflow.com/questions/1119134/how-do- malloc-free-work)? – moooeeeep

回答

5

應該有幾百萬的解釋使用malloc頁,我懷疑你做了很多的搜索。但這裏是你怎麼稱呼它:

char *var = malloc(sizeof(char) * 1000); 

對於其他類型的,只是改變它:

int *int_var = malloc(sizeof(int) * 1000); 

編輯請記住,你必須使用後釋放所分配的內存!或者你會有內存泄漏。

free(var); 
free(int_var); 
+3

不要施放'malloc'的返回指針 – Constantinius

+0

@Constantinius好的,回答編輯。 –

+3

var = malloc(sizeof * var * 1000)通常優於malloc(sizeof(char)* 1000) –

0

如果你已經聲明瞭變量char var[1000];你已經靜態分配的內存量。你不需要爲此調用malloc

如果要使用動態分配和您的變量聲明如下:char *var;可以按如下分配內存:

var = malloc(1000); 

也不要忘記釋放你分配的內存時,即可大功告成與它:

free(var); 
+0

但是如果它不是一個指針? – dikidera

+0

@dikidera如果它不是一個指針,那麼它已經有了它的空間,並且不需要malloc。 – mah

+1

@dikidera:如果你想動態分配內存,那麼你必須使用一個指針來存儲它的地址。如果你希望你的變量是一個數組,那麼你不使用malloc。 –

1

你不想使用malloc這個變量,因爲它已經分配的,但你可以通過使用

達到類似的結果
char *var = malloc(sizeof(char[1000])); 
// do stuff 
free(var); 
0

如果你有char var[1000]你不需要malloc這個定義會爲你的var分配1000*sizeof(char)所以你可以做var [999] ='x';