c语言结构体中使用malloc和memcpy
结构体是
typedef struct Stack
{
STDataType* a;
int top;
int capacity;
}ST;
void StackCopy(ST* ppath,ST* pcopy)
{
pcopy->a = (STDataType*)malloc(sizeof(STDataType*)*ppath->capacity);
memcpy(pcopy->a,ppath->a,sizeof(STDataType)*ppath->top);
pcopy->top=ppath->top;
pcopy->capacity=ppath->capacity;
}
为什么malloc的sizeof后面要用STDataType而不是STDataType
还有memcpy的sizeof后面为什么要ppath->top
1.在问为什么之前,你先确定这段代码是对的,不是错的
2.你就放这么点代码,没一句注释,鬼知道top是干什么的,capacity又是干什么的
malloc(sizeof(返回的指针将指向的类型)*元素个数),你现在的a指向类型是STDataType。所以不是STDataType * 而是STDataType,你这里写错了吧。
memcpy是拷贝ppath->top个元素个数过去,没拷贝完。