![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
J4e8a16n
Crash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NELEM(a) (sizeof(a)/sizeof(*a))
int main(void/* int argc, char * argv[], char * envp[] */)
{
char *a[1];
a[0] = (char *) malloc(30 * NELEM(a));
strcpy(a[0] , "Je ne fais jamais d'erreur.\0");
printf("%s\n", *(a+0));
/* ne fonctionne pas
sys_errlist[200] = (char*) malloc(30 * NELEM(sys_errlist[200]));
strcpy(sys_errlist[200] , "Je ne fais jamais d'erreur.\0");
printf("%s\n", *(sys_errlist+200));
*/
return EXIT_SUCCESS;
} |
![:calim2:](https://www.developpez.net/forums/images/smilies/calim2.gif)
Petit malin, comme je l'ai dis, sys_errlist est un type incomplet déclaré ainsi:
extern char * sys_errlist[];
sizeof ne s'applique pas sur un type incomplet.
Partager