Pourquoi le bloc de code suivant ne fonctionne-t-il pas?Quel est le problème avec le bloc de code suivant?
int *p1 = malloc(128);
int main(void) {
char *p2 = malloc(128);
}
Pourquoi le bloc de code suivant ne fonctionne-t-il pas?Quel est le problème avec le bloc de code suivant?
int *p1 = malloc(128);
int main(void) {
char *p2 = malloc(128);
}
vous ne pouvez pas utiliser malloc pour initialiser p1 en dehors du bloc de code comme ça, le faire à l'intérieur comme principale p2
Vous ne pouvez pas appeler une fonction dans l'initialisation d'une variable globale . C'est la ligne dont il se plaint:
int *p1 = malloc(128);
Changez ceci en NULL, puis en main, initialisez-le.
L'initialisation d'une variable globale doit être constante, donc le premier malloc
provoquera une erreur de compilation.
1er, l'erreur de base est que votre principale méthode doit retourner une valeur int
int main(void) {
char *p2 = malloc(128);
return 0;
}
ou essayez
void main(){
char *p2 = malloc(128);
}
2, vous pouvez spécifier quel type de tampon que votre pointeur est , sinon, ce sera un (void *) de type pointeur, donc je suggère que vous pouvez essayer:
int *p1 = (int*)malloc(128);
char *p2 = (char*)malloc(128);
-1 'void main()' n'est vraiment pas correct. Lancer un malloc n'est pas non plus nécessaire. Pointeur vide est automatiquement converti en n'importe quel pointeur, vous n'avez rien à spécifier. –
Je le mettrais beaucoup plus fortement que ça: 'void main()' est faux sur toute implémentation hébergée, ce qui entraîne un comportement indéfini. Ne fais jamais cela. –
que voulez-vous dire par « ne fonctionne pas "? Pouvez-vous coller dans le message d'erreur? –
(1): erreur: l'initialiseur doit être constant. –
Définir "ne fonctionne pas": quelles erreurs obtenez-vous, qu'espériez-vous arriver et qu'est-ce qui se passe réellement? –