struct teacher{
char* name;
int age;
} tec;
//64位程序,字节对齐后16个直接大小
cout << sizeof(tec) << "::" << sizeof(struct teacher) <<endl;
struct teacher* t = (struct teacher*)malloc(sizeof(tec));
t->name = (char*)malloc(sizeof(char)*5);
//如上分别申请结构和字符串的空间,字符串长度只要比“牛玲”长度+1,不发生缓冲溢出就没问题
printf("%p %p\n", t->name, t);
//这个可看地址的分配情况
strcpy(t->name, "牛玲");
t->age =19;
printf("%s %d\n", t->name, t->age);
free(t->name);
free(t);
fflush(stdout);
输出结果
16::16
0x55bdb8eaf050 0x55bdb8eaf030
牛玲 19
贴的图可见无论10还是20,字符串没有问题,整个过程是对的,问题不是发生在这里,可能是上下文其他地方不对了吧
今天早上起来重启之后又好了
就是写结构体指针申请内存的时候,写法不同,导致程序能不能打印,但是不清楚有什么区别
– 柠檬太酸了 3年前