Répondre
void* space_to_use = malloc(size);
// malloc always return void pointer that means it can be typecast to any type.
// before using void pointer it is necessary to typecast it into proper type.
// for example:-
// if size is 8 byte.It will allocate 8 byte of memory.
/*
void* space_to_use = malloc(size);
char * ptr = (char*)space_to_use;
*/
// These two line can be combine in one statement.
char * ptr = (char*)malloc(size*sizeeof(char));
// NOTE:sizeof(char) is to make sure platform independent.
// Same for int if we want to store some integer.
int * ptr = (int*)malloc(size*sizeeof(int));
Juste pour information: 'sizeof char' est défini pour toujours être' 1', donc il n'y a jamais besoin de muliply. Cependant, la définition 'CHAR_BIT' peut être différente. –
Voir également [Dois-je diffuser le résultat de malloc?] (Https://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc) –
Oui, ce sera toujours un octet, mais ce sera générique pour integer pour integer * ou structure varaibe ou pointer.Nous devons ajouter sizeof (int) ou sizeof (int *) ou sizeof (strcuct abcd) donc si nous mentionnons sizeof (char) cela ne nuira à rien. – Rohit
Impossible de copier-coller tout le livre C. Obtenez n'importe quel livre, la réponse est d'abord 10 pages. –
peut être tout ce que vous voulez –
Il est difficile de déduire le but de l'utilisation de morceaux de mémoire de cette pièce de code. Peut-être n'est-il pas destiné à un usage spécifique. – BLUEPIXY