Kommandoen malloc() bruges til at allokere hukommelse på heapen og er ikke nødvendig ved brug af int. Når hukommelsen allokeres sættes den ikke til nogen værdi. Du får blot stillet hukommelsen tilrådighed.
int main() {
int result = 100;
printf("%d", result);
return 0;
}
Grunden til at den udskriver "4" det skyldes at du beder den om at skrive størrelsen på din pointer ved brug af sizeof(int*), hvilket altid er 4 bytes.
Insisterer du på at bruge malloc ved int, så skal du efter du har allokeret hukommelsen, sætte den til til værdien. Når du sætter værdien, så skal du huske at dereferere din pointer ellers ændre du adressen pointeren peger på i stedet for at ændre de data den peger på. Jeg vil i øvrigt anbefale at du initialisere hukommelsen inden du bruger den og så er 100 bytes måske lige rigeligt for int. Brug i stedet sizeof(int),
int main(int argc, char* argv[])
{
int *result;
result = (int*)malloc(sizeof(int)+1);
memset(result, 0, sizeof(int)+1);
(*result) = 100; // Her sættes værdien!
if( result == NULL ) {
printf("Malloc Error");
}
printf("%d", *result);
free(result);
return 0;
}
HTH
Indlæg senest redigeret d. 17.02.2007 15:22 af Bruger #10448