La fonction Malloc (allocation dynamique de la mémoire), résultant en une erreur lorsqu'il est utilisé dans le monde entier

#include<stdio.h>
#include<string.h>
char *y;
y=(char *)malloc(40); //gives an error here
int main()
{
    strcpy(y,"hello world");
}

error: conflicting types for 'y'
error: previous declaration of 'y' was here
warning: initialization makes integer from pointer without a cast
error: initializer element is not constant
warning: data definition has no type or storage class
warning: passing arg 1 of `strcpy' makes pointer from integer without cast

Maintenant la vraie question est, ne peut-on pas faire de l'allocation dynamique de la mémoire à l'échelle mondiale? Pourquoi fait-il une erreur lorsque j'utilise malloc à l'échelle mondiale? Et le code fonctionne sans erreur si j'ai mis malloc déclaration à l'intérieur de la fonction principale ou une autre fonction. Pourquoi est-ce donc?

#include<stdio.h>
#include<string.h>
char *y;
int main()
{
    y=(char *)malloc(40); 
    strcpy(y,"hello world");
}
En plus de Tapis de réponse, n'oubliez pas de #include <stdlib.h> de sorte que vous obtenez une bonne déclaration pour malloc() (sans votre "travail" code sera buggy sur la plupart des systèmes 64 bits).

OriginalL'auteur niko | 2011-07-19