Bonjour.
Je sais que malloc est utilisé pour une 1° allocation mémoire et realloc pour modifier la taille initialement allouée mais je constate que je peux aussi utiliser realloc pour la 1° allocation mémoire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
int main() {
	int *ptr1 = (int*) malloc(sizeof(int));
	int *ptr2 = NULL;
	ptr2 = (int*) realloc(ptr2, sizeof(int));
	ptr1[0]=1;
	ptr2[0]=2;
	printf("%d %d\n",ptr1[0],ptr2[0]);
	return 0;
}
je me trompe ? il ne faut pas le faire ?
Ça me semble pourtant bien pratique, par exemple pour éviter de devoir différencier le cas initial (malloc) des cas suivants (realloc)dans une allocation conditionnelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
int main() {
	int *ptr2 = NULL;
	int i = 0;
	while (i < 10) { // par exemple
		ptr2 = (int*) realloc(ptr2, (i+1) * sizeof(int));
		ptr2[i] = i; // par exemple
		i+=1;
	}
	for (i = 0;i<10;i++){
	printf("%d\n", ptr2[i]);
	}
	return 0;
}
}
Merci d'avance pour vos lumières