相关疑难解决方法(0)

内存动态分配问题:main:malloc.c:3096:sYSMALLOc

我正在写一个简单的函数来创建一个代表一副牌的列表.这是结构的定义

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)

c memory malloc valgrind list

2
推荐指数
1
解决办法
3021
查看次数

标签 统计

c ×1

list ×1

malloc ×1

memory ×1

valgrind ×1