首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个程序运行如何会崩溃

2012-08-29 
这个程序运行怎么会崩溃?C/C++ codestructpList{int numstruct pList *pNext}void main(){pList * head

这个程序运行怎么会崩溃?

C/C++ code
struct  pList{    int num;    struct pList *pNext;};void main(){    pList * head,*pEnd,*p1;    head->pNext=pEnd;    //head->num=1;    head->pNext=p1;    //p1->num=2;    p1->pNext=pEnd;    while(head->pNext!=pEnd)    {        cout<<head->num;        head=head->pNext;    }}


[解决办法]
head是个野指针
就不应该使用head->pNext

其他问题类似
[解决办法]
没有指向内存都不行.
[解决办法]
head和p1没有分配空间,哪来的head->pNext和p1->pNext?

VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

[解决办法]
使用未初始化或负值的野指针。
[解决办法]
pList * head,*pEnd,*p1;//这几个都还没有new一个地址给它们呀,当然不能使用它们了。
在使用指针时可要判断该指针的有效性哦。
[解决办法]
lz以后要养成指针初始化成null的习惯便于发现错误~
[解决办法]
head是个野指针
就不应该使用head->pNext

热点排行