关于结构体的内存申请

来源:百度知道 编辑: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;
}

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!!!