Hari ini saya mencapai halaman 167 dari The C Programming Language (edisi kedua Brian W. Kernighan & Dennis M. Ritchie) dan menemukan bahwa penulis mengatakan saya harus dilemparkan malloc
. Inilah bagian dari buku ini:
7.8.5 Manajemen Penyimpanan
Fungsi malloc dan calloc mendapatkan blok memori secara dinamis.
void *malloc(size_t n)
mengembalikan pointer ke n byte penyimpanan yang tidak diinisialisasi, atau NULL jika permintaan tidak dapat dipenuhi.
void *calloc(size_t n, size_t size)
mengembalikan pointer ke ruang kosong yang cukup untuk larik n objek dengan ukuran yang ditentukan, atau NULL jika permintaan tidak dapat dipenuhi. Penyimpanan diinisialisasi ke nol. Pointer yang dikembalikan oleh malloc atau calloc memiliki keselarasan yang tepat untuk objek yang bersangkutan, tetapi harus dilemparkan ke dalam tipe yang sesuai, seperti pada
int *ip; ip = (int *) calloc(n, sizeof(int));
Saya sudah tahu bahwa malloc
(dan keluarganya) mengembalikan tipe void * , dan ada penjelasan bagus mengapa tidak melakukan castmalloc
.
Tetapi pertanyaan saya adalah: Mengapa buku itu mengatakan saya harus melemparkannya?
void *
, dan tidak diperbarui. Lihat juga jawaban ini .malloc
karena BUKAN C ++ - kecuali saat Anda harus - tetapi Anda tidak boleh - kecuali ... AGGGHHHHHH !!!!! :-)Jawaban:
Dari http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :
sumber
char*
tidakchar
. Keduanya sangat berbeda.