【发布时间】:2017-11-10 10:20:40
【问题描述】:
我正在使用 realloc 将一些数据分配到内存中
打印字符数组/字符值没有问题,但只有十进制我遇到问题
size_t N_att;
typedef struct student_struct {
char *name;
int32_t age;
int32_t marks;
} STUDENT;
STUDENT*STUDENTS;
STUDENTS= realloc(STUDENTS, (N_att + 3) * sizeof(*STUDENTS));
STUDENTS[N_att].name = "James";
STUDENTS[N_att++].age = 20;
STUDENTS[N_att+2].marks = 100;
STUDENTS[N_att] = (STUDENT) { NULL };
//testing to print the 1st entry only
printf("%s %d %d", STUDENTS[0].name, STUDENTS[0].age, STUDENTS[0].marks);
输出
James -8421540451 -8421540451
我不知道这里有什么问题,它正在打印对我来说看起来像内存中值的指针。 如果我打印小数的方向错误,请纠正我
【问题讨论】:
-
在 realloc 中使用
temp..否则如果失败..你有内存泄漏 -
旁注:按照惯例,所有大写标识符都是为宏保留的。
-
错字,已更正 N_att + 2
-
STUDENTS[N_att++]也很可疑。 minimal reproducible example请。 -
FWIW,您使用索引 N_att、N_att++(增加 N_att)和 N_att+2(原始 N_att+3)。为什么?为什么不都访问同一个结构?
标签: c printf dynamic-memory-allocation realloc