C语言错误堆栈,讨教C语言 堆栈释放崩溃 问题

阅读: 评论:0

C语言错误堆栈,讨教C语言 堆栈释放崩溃 问题

C语言错误堆栈,讨教C语言 堆栈释放崩溃 问题

LZ最近刚开始自学C语言 学到堆栈内存部分的时候 遇到了很多奇奇怪怪的问题 很多问题LZ百思不得其解 希望各位大神不吝赐教。

关联问题1描述:释放堆内存的时候 本人感觉并没有越界操作的行为 但是每次程序执行到free的时候就会停 例如以下代码

#include 

#include 

#include 

#pragma warning(disable:4996)

typedef struct

{

char name[16];

unsigned char age;

unsigned char sex;

} Student;

int main(void)

{

Student *st = (Student *)malloc(sizeof(Student) * 2);

memset(st, 0, sizeof(Student) * 2);

for (int i = 0; i 

{

printf("pls input name:");

scanf("%s", (st + i)->name);

printf("pls input age:");

scanf("%d", &(st + i)->age);

printf("pls input sex(0/1):");

scanf("%d", &(st + i)->sex);

printf("n");

}

free(st);

return 0;

}

关联问题2描述:将以上代码中的st换成栈变量后 依然会报错 是在栈释放的时候出现ERROR提示 代码如下

#include 

#include 

#include 

#pragma warning(disable:4996)

typedef struct

{

char name[16];

unsigned char age;

unsigned char sex;

} Student;

int main(void)

{

Student st[2] = { 0 };

for (int i = 0; i 

{

printf("pls input name:");

scanf("%s", st[i].name);

printf("pls input age:");

scanf("%d", &st[i].age);

printf("pls input sex(0/1):");

scanf("%d", &st[i].sex);

printf("n");

}

return 0;

}

错误截图如下

希望各位大神能指出以上代码中哪个部分出现了问题  有更加详细的解答当然更加好 小弟不胜感激

本文发布于:2024-02-04 09:54:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170704543754540.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:讨教大学
标签:堆栈   语言   错误
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23