// if you initialize a pointer and want to use it like an array,
// you have to claim the space you use,
// that is what the memory-allocation-funtion (malloc) does;
// exaple for that: str(0) belongs to you, but str(1), str(2), ... do not
// if you do not use the malloc funtion;
// you can access it, but it could be used by another programm;
#include <stdio.h>
#include <stdlib.h>
void func(void)
{
char *str = malloc(sizeof(char) * 5); // sizeof --> char needs
// a specific space per value saved;
// *5 --> 5 is the number of values in the array;
char *str1 = malloc( 5 * sizeof *str1 );// |
char *str2 = malloc( sizeof(char[5]) );// | other syntaxes
if(str == NULL) { exit(1); } // malloc returns NULL
// if it could not allocate the memory;
str[0] = 'H';
*(str+1) = 'e'; // used like pointer
str[2] = 'y'; // used like array
*(str+3) = '!';
str[4] = ' ';
printf("%s
", str);
free(str); // frees the memory allocated to str;
// if you free the memory too early and try to access str later
// that is called a memory leak;
}
int main(void)
{
func();
return 0;
}
// shell: Hey!
// improved version of Thurger's
// Let's allocate enough space on the heap for an array storing 4 ints
intArray = (int *) malloc(4 * sizeof(int)); // A pointer to an array of ints
intArray[0] = 10;
intArray[1] = 20;
intArray[2] = 25;
intArray[3] = 35;
int main(int argc, char *argv[])
{
int* memoireAllouee = NULL;
memoireAllouee = malloc(sizeof(int));
if (memoireAllouee == NULL) // Si l'allocation a échoué
{
exit(0); // On arrête immédiatement le programme
}
// On peut continuer le programme normalement sinon
return 0;
}
/*
*Dynamic memory creation using malloc
*Language: C
*/
#include<stdio.h>
//To use malloc function in our program
#include<stdlib.h>
int main()
{
int *ptr;
//allocating memory for 1 integer
ptr = malloc(sizeof(int));
if(ptr != NULL)
printf("Memory created successfully
");
return 0;
}
In C, the library function malloc is used to allocate a block of memory on the heap. The program accesses this block of memory via a pointer that malloc returns. When the memory is no longer needed, the pointer is passed to free which deallocates the memory so that it can be used for other purposes.