问题显示是写入访问权限冲突,不知道是不是我开辟结构体数组的时候分配内存不对还是什么,请教各位大神[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/19.gif]img]
4 个解决方案
#1
不知道你的Init_step_q是怎么初始化的,错误提示很明显,你的program[i].stepend->next已经不存在了,空指针赋值肯定会有非法内存访问错误。
#2
下断点查看program数组里面的指针是否为空,往上跟
#3
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,
看不懂时双击下一行,直到能看懂为止。
#4
没看到完整代码。胡乱猜测一下
在for循环中的En_Step_Q()函数调用时,第三个参数program[i].stepend这个指针可能是空指针。也就是说,可能在for循环之前调用
Init_Step_Q()函数对program[i].stepend进行初始化时,这个指针指向的是一个局部变量的地址,当Init_Step_Q()函数结束后,该局部变量的地址就无效了,导致program[i].stepend是一个无效指针。
在for循环中的En_Step_Q()函数调用时,第三个参数program[i].stepend这个指针可能是空指针。也就是说,可能在for循环之前调用
Init_Step_Q()函数对program[i].stepend进行初始化时,这个指针指向的是一个局部变量的地址,当Init_Step_Q()函数结束后,该局部变量的地址就无效了,导致program[i].stepend是一个无效指针。
#1
不知道你的Init_step_q是怎么初始化的,错误提示很明显,你的program[i].stepend->next已经不存在了,空指针赋值肯定会有非法内存访问错误。
#2
下断点查看program数组里面的指针是否为空,往上跟
#3
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,
看不懂时双击下一行,直到能看懂为止。
#4
没看到完整代码。胡乱猜测一下
在for循环中的En_Step_Q()函数调用时,第三个参数program[i].stepend这个指针可能是空指针。也就是说,可能在for循环之前调用
Init_Step_Q()函数对program[i].stepend进行初始化时,这个指针指向的是一个局部变量的地址,当Init_Step_Q()函数结束后,该局部变量的地址就无效了,导致program[i].stepend是一个无效指针。
在for循环中的En_Step_Q()函数调用时,第三个参数program[i].stepend这个指针可能是空指针。也就是说,可能在for循环之前调用
Init_Step_Q()函数对program[i].stepend进行初始化时,这个指针指向的是一个局部变量的地址,当Init_Step_Q()函数结束后,该局部变量的地址就无效了,导致program[i].stepend是一个无效指针。