Frage zu Fehler
-
Stack around Variable zahl corrupted. Warum das ? Ich versuche gerade ein array nachzubauen.
int main() { int zahl = 5; int* ptr = &zahl; *(ptr + 1) = 6; *(ptr + 2) = 7; *(ptr + 3) = 8; *(ptr + 4) = 9; printf("%p\n", ptr); printf("%p", ptr + 1); return 0; }
-
int *ptr = (int *)malloc(sizeof(int) * 5);
wenn man malloc macht dann gehts sogar. Hm. Der Compiler meckert wohl deswegen rum...
-
Du greifst auf Speicher zu, der dir nicht zugewiesen wurde, .der nicht unter deiner Kontrolle steht.
Mit
int zahl = 5;
belegst du Platz für ein int.
Mit*(ptr + 1) = 6;
greifst du aber auf Speicher zu, der dahinter liegt.Da liegen z.B. programminterne Informationen (Rücksprungadressen o.Ä.)
Die hast du überschrieben.
-
Den Cast bei malloc kannst Du auch gleich mal streichen.
-
SG1 schrieb:
Den Cast bei malloc kannst Du auch gleich mal streichen.
Also mein Visual Studio gibt mir nen Fehler ohne cast !!!
-
hast du die dateiendung auf .c gesetzt?
-
computernerds schrieb:
SG1 schrieb:
Den Cast bei malloc kannst Du auch gleich mal streichen.
Also mein Visual Studio gibt mir nen Fehler ohne cast !!!
Da du C programmierst, solltest du deinen Compiler auch auf C einstellen.
Der Cast ist nur bei C++ nötig.
Visual Studio wird dir auch Meldungen bei printf und scanf geben.
Wenn du die Funktionen 1:1 gegen den Vorschlag ersetzt, fällst du ziemlich auf die Schn...
-
DirkB schrieb:
Der Cast ist nur bei C++ nötig.
Ja stimmt. Der Rueckgabewert von malloc is void* und der C++ compiler will hier einen cast haben.
-
bei c++ ist malloc aber nur eine "altlast" und wenn du die dateiendung auf .c änderst, funktionierts mit dem visual c++ compiler auch ohne cast.