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;

}

错误截图如下

d747e5c3267b2ec1f6271d69339cbc07.png

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值