/*関数Cmd_pushd*/
struct dirStack *Cmd_pushd (struct dirStack *top){
struct dirStack *newTop;
char curName[256];
/*メモリの確保*/
if ((newTop=(struct dirStack *)malloc(sizeof(struct dirStack)))==NULL){
fprintf(stderr,"memory error!\n");
return;
}

getcwd(curName,sizeof(curName));//カレントディレクトリをcurNameに保存
/*以下の2行でバグ発生*/
newTop->dirName=(char *)malloc(sizeof(strlen(curName)+1));
strcpy(newTop->dirName,curName);

if (top!=NULL){
newTop->next=top;
}
return newTop;
}

ややこしくてすみません…。