回 帖 发 新 帖 刷新版面

主题:线性表初始化指针

#include<stdio.h>
#include<stdlib.h> 

typedef int ElemType;

#define INITSIZE 100
#define LISTINCREMENT 10

typedef struct{
    ElemType * data;
    int length;
    int listsize;
}sqlist;

int initlist(sqlist *L)
{
    L->data=(ElemType*)malloc(INITSIZE*sizeof(ElemType));
    if(L->data==NULL)
    return 0;
    L->length=0;
    L->listsize=INITSIZE;
    return 1;
}
void main()
{
    sqlist *L;
    int i;
    L=(sqlist*)malloc(sizeof(sqlist));
    if(NULL == L) 
        {
        return -1; 
        }
    i=initlist(L);
    printf("%d",i);
    free(L);
}

请教L指针指向的内存和L->data指针指向的内存的关系,是L的包含data的吗?还是data另外开辟内存,还有他两的内存谁的大啊?

回复列表 (共2个回复)

沙发

L指向的内存跟其data成员指向的内存在两个不同的地方,data的内存单开的。从你的程序的定义来看data的比L的大

板凳

顶楼上的,还有就是当释放内存时先释放date指向的内存,在释放L指向的内存!

我来回复

您尚未登录,请登录后再回复。点此登录或注册