本文主要是介绍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;
}
错误截图如下
希望各位大神能指出以上代码中哪个部分出现了问题 有更加详细的解答当然更加好 小弟不胜感激
这篇关于C语言错误堆栈,讨教C语言 堆栈释放崩溃 问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!