关于结构体的内存申请
来源:百度知道 编辑:UC知道 时间:2024/06/22 00:37:13
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
typedef struct stack
{
int * stackBase;
int top;
}stack;
stack * BuildStack(void)
{
stack * x;
x->stackBase = (int *)malloc(MAX * sizeof(int));//单步执行道这里就显示错误(Unhandled exception in),什么原因?
x->top = 0;
return x;
}
int main(void)
{
stack * s;
s = BuildStack();
printf("Build Complete!\n");
free(s->stackBase);
return 0;
}
#include <stdlib.h>
#define MAX 10
typedef struct stack
{
int * stackBase;
int top;
}stack;
stack * BuildStack(void)
{
stack * x;
x->stackBase = (int *)malloc(MAX * sizeof(int));//单步执行道这里就显示错误(Unhandled exception in),什么原因?
x->top = 0;
return x;
}
int main(void)
{
stack * s;
s = BuildStack();
printf("Build Complete!\n");
free(s->stackBase);
return 0;
}
stack * BuildStack(void)
{
stack * x;
x = (stack*)malloc(sizeof(stack)); //需要先为x分配空间,否则x只是一个空指针,x->stackBase自然是不存在的。
x->stackBase = (int *)malloc(MAX * sizeof(int));
x->top = 0;
return x;
}
x为指针,还没有申请空间,x->stackBase就不存在,所以不能给他申请空间。
应该先给x申请空间。
stack * BuildStack(void)
{
stack * x;
x=(stack *)malloc(sizeof(stack));
x->stackBase = (int *)malloc(MAX * sizeof(int));//单步执行道这里就显示错误(Unhandled exception in),什么原因?
x->top = 0;
return x;
}
我把你的程序复制运行过来了,没什么问题啊!tc20!!!