C++中链表申请空间的问题new 与 malloc
链表定义如下:
//-----
//linkhead.h
//-----
#ifndef _LINKHEAD_H_
#define _LINKHEAD_H_
#include <string>
#include <iostream>
using namespace std;
typedef int nodeEntry;
struct link
{
string psValue;
link *next;
};
typedef struct nodeCDT
{
nodeEntry entry;
nodeCDT *next;
}*nodeADT;
typedef struct linkCDT
{
nodeADT head;
}*linkADT;
#endif
//------
//link.cpp
//-----
#include "linkHead.h"
#include <windows.h>
void InitLink(linkADT *linkA)
{
//*link = (linkADT)malloc(sizeof*(*link));//C的风格。但是非的这样写么?
*linkA = new linkCDT ;//我用new来分配空间。但是到这里出错。请问是为什么呢?我知道linkADT是linkCDT
(*linkA)->head = NULL;//的指针,如果想在局部函数里申请空间,就得用指针的指针。因此这里传的
//是linkDat类型的*linkA。那按照linkADT指向的对象,应该是用linkCDT
// 编译也通过。但无法申请到空间,为什么呢?高手赐教。
// 在这样的情况下用new来申请指针的指针所指向的对象改怎么用呢?谢谢。
}
int main()
{
//linkExample();
linkADT *linkA = NULL;
InitLink(linkA);
return 0;
}