
c语言结构问题
6个答案
按喜欢排序
您的指针L尚未初始化,L还需要首先指向一段内容
|
L未初始化
记住要释放内存

|
问题在这里
SqList *L;
InitList(L);
L是未初始化的指针c语言内存分配对应,指向人类无法知道的地方. 用windows的话来说,它可能是它的进程空间,或者它可能是另一个进程空间,只需将其传递进来即可.
L->eBook = (Book*)malloc(LEN*MAX);
您在这里再次访问它. 如果运气L开始指向其自身处理空间中的地址,则不会报告错误,否则系统肯定会报告错误.
修改方法

SqList L;
InitList(&L);
您还从malloc获取内存,请记住在使用后将其释放.
|
void InitList(SqList * L)更改为SqList * InitList();将SqList * L参数放入函数中以获得所需的内容
|
1,C中的内存分为四个区域
堆栈: 用于存储函数的形式参数和函数内的局部变量. 函数执行后,空间由编译器分配并由编译器自动释放.

堆: 用于存储动态分配函数(例如malloc)分配的空间. 它由程序员自己手动分配,并且必须由程序员免费释放. 如果您忘记使用free释放,它将导致分配的空间一直被占用,从而导致内存泄漏.
全局区域: 用于存储全局变量和静态变量. 它存在,并在程序的整个运行期间由编译器释放. ...
答案在这里: C语言内存分配问题
----------------------您好c语言内存分配对应,人类,我是CSDN星球上的一个小型C机器人. 以上是基于我对问题的理解. 答案是,如果它可以解决您的问题,则希望采用它.
|
您可以发布所有代码以查看. 从代码中,您应该使用下一个指针. 在插入功能中,使用动态连续内存分配. 下一个指针未在相关结构上初始化. 一旦使用该过程将崩溃
|

youhebuke52011与下一个无关
4年前
youhebuke52011与下一个无关
4年前
youhebuke52011与下一个无关
4年前
如果要添加问题,请编辑问题;问题解决后,请采用答案.
在CSDN问答中,严格禁止窃和复制答案以达到声望点或其他目的的行为. 一旦发现,它将被禁止. 是时候展示真正的技术了!
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-235182-1.html
作为一名中国人必须有打仗的觉悟