我有一个看起来像这样的结构:
typedef struct
{
int *numberList;
int size;
int maxNumber;
} list;
然后我有这个方法来创建一个列表:
list* createList(int maxNumber)
{
list l;
l.size = 0;
l.numberList = malloc(maxNumber*sizeof(int));
list* ptr = &l;
return ptr;
}
然后我在工作中有这个方法:
int updateSize(list *ls)
{
ls->size++;
printf("This is a print statement.\n");
return 0;
}
我在main方法中检查size的值,它适用于初始化和更新,但是当它到达print语句时,大小会更改为一个大的不正确的数字(垃圾值?),例如在我的代码的完整版本中,我还在我的updateSize()中使用malloc()作为我的numberList,甚至可以保留结果,因为它们应该在print语句之前。我的问题是:什么是改变我的结构成员的print语句?
答案 0 :(得分:4)
您从l
返回createList
的地址,但l
是该函数的本地地址,因此它占用的空间可以(显然是)用于其他事项,覆盖之前有什么。