我正在写一个简单的函数来创建一个代表一副牌的列表.这是结构的定义
typedef struct {
float valoreEff;
char *seme;
char *valore;
} carta;
struct Mazzo {
carta info;
struct Mazzo *nextPtr;
};
typedef struct Mazzo mazzo;
typedef mazzo *mazzoPtr;
Run Code Online (Sandbox Code Playgroud)
这是返回指向列表第一个元素的指针的函数
mazzoPtr caricaMazzo(void){
mazzoPtr sMazzoPtr=NULL;
int val,seme;
carta buffer;
mazzoPtr newPtr;
char *tabValori[10]={"Asso","Due","Tre","Quattro","Cinque","Sei","Sette","Donna","Cavallo","Re"};
char *tabSeme[4]={"Denari","Spade","Coppe","Bastoni"};
for(seme=0;seme<4;seme++){
for(val=0;val<10;val++){
buffer.seme=tabSeme[seme];
buffer.valore=tabValori[val];
if (val<=7) {
buffer.valoreEff=val+1;
}
else {
buffer.valoreEff=0.5;
}
printf("ok\n");
newPtr=malloc(sizeof(carta));
if (newPtr==NULL){
printf("Memoria insufficiente\n");
return NULL;
}
newPtr->info=buffer;
newPtr->nextPtr=sMazzoPtr;
sMazzoPtr=newPtr;
}
}
return sMazzoPtr;
}
Run Code Online (Sandbox Code Playgroud)
GCC没有给我编译时错误,但是当我执行程序时,这就是输出
ok
ok
main: malloc.c:3096: sYSMALLOc: Assertion …Run Code Online (Sandbox Code Playgroud)