Ich habe ein seltsames Problem mit der dynamischen Speicherzuweisung. Immer wenn ich ein Mitglied einer Struktur mit nur einem int
dynamisch zuordne, kann ich uns viele schreiben, die ich wollte, anstatt nur eine int
wie eine normale Variable nicht ein Array. Dies ist mein Code mit einigen Kommentaren und vielleicht können Sie sagen, was ich falsch mache oder was ich Punkt übersprungen:C dynamische Member-Struktur
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int *sign_h;
int max_chars;
} myformat;
int main()
{
myformat *myfile=malloc(sizeof(myformat)); // one struct
myfile->max_chars=100;
myfile->sign_h=malloc(1*sizeof(int)); //size of one int
myfile->sign_h[333]=50; //Is this suppose to work?
printf("test %d",myfile->sign_h[333]); // printf print value of 50
FILE* f1=NULL;
char nume[]="myfile.bin";
f1=fopen(nume,"wb");
fwrite(&myfile,sizeof(myformat),1,f1);
fclose(f1);
return 0;
}
PS: Und was ist C++? wenn ich es in C++ mache, bekomme ich unterschiedliche Ergebnisse?
Herzlichen Glückwunsch, Sie haben einen Pufferüberlauf entdeckt –
Undefiniertes Verhalten ist nicht definiert. – EOF
Die Sprache hält Sie nicht davon ab, sich in den Fuß zu schießen, also liegt es in Ihrer Verantwortung, dies zu vermeiden. – jamesdlin