malloc分配不了

来源:百度知道 编辑:UC知道 时间:2024/06/11 11:57:59
我想用自定义的结构来读取数据,这3个结构如下:
//Direct3D Geo
struct GeoStruct
{
struct CUSTOMVERTEX *pVertices;
D3DMATERIAL8 *pMtrl;
int nMaxMtrl;
int nMaxVer;
struct NodeVertex *pNV;
struct NodeMaterial *pNM;

};
//Direct3D Material
struct NodeMaterial
{
struct NodeMaterial *pNext;
D3DMATERIAL8 mtrl;
int nStartVertex;
};
//Direct3D Vertices
struct NodeVertex
{
struct NodeVertex *pNext;
int nVerStart;
int nVerticesLength;
int DrawType;
};
结构 NodeVertex和NodeMaterial是结构GeoStruct中的两个链表节点.
目前郁闷的是函数:
void AddNewNM(struct NodeMaterial *pFather,D3DMATERIAL8 *dat,int nStart)
{
if(pFather==NULL) return;
pFather->pNext=(struct NodeMaterial *)malloc(sizeof(struct NodeMaterial *));
if(pFather->pNext ==NULL) return;
pFather->pNext->mtrl=*dat;
pFather->pNext->nStartVertex =nStart;

}
可以分配内存给新节点.但是下面

你的sizeof里面写错了

pFather->pNext=(struct NodeVertex *)malloc(sizeof(struct NodeVertex *));

要改成:

pFather->pNext=(struct NodeVertex *)malloc(sizeof(struct NodeVertex));

其他一样.

因为你要申请一个struct NodeVertex所占的内存,而不是它的指针,一个指针,无论是什么类型,都只是一个地址,大小都是4个字节