-1
我有动态内存分配的奇怪问题。 每当我动态地分配一个结构的成员只有一个int
我可以给我们写很多我想要的而不是像普通变量那样只有一个int
而不是数组。 这是我的一些评论代码,也许你能告诉我在做什么错误或我跳过了点什么:C动态成员结构
#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:又是怎么回事C++?如果我用C++编写它,我会得到不同的结果?
恭喜你,你已经发现缓冲区溢出 –
未定义的行为是未定义的。 – EOF
语言不会阻止你在脚下射击自己,所以你有责任避免这样做。 – jamesdlin