C++编译连接都通过了,可是运行时却莫名其妙终止了~

我编了一个旅客订机票信息链表类,结点中有一个数据成员是旅客的座位号,其中有一个插入新结点的函数,即为新订票的旅客分配座位,因为有旅客会退票,所以我的这个函数是这样做的:
void customer_info_list::insert_node(char nam[],char id[])//订票时插入新的旅客登记信息结点函数
{customer *p,*q,*r;
p=head->next;
q=head;
while(p!=NULL)
{if(p->chair_num!=q->chair_num+1)break;
q=p;
p=p->next;
}
r=CreateNode(nam,id,q->chair_num+1);
r->next=p;
q->next=r;
cout<<"座号:"<<r->chair_num<<endl;
}
但是运行时会终止,进行调试时它给出了这样的回答:
存入旅客登记表.exe 中的 0x0040219f 处未处理的异常: 0xC0000005: 读取位置 0xddddde09 时发生访问冲突
我想请问一下这是什么问题,应该怎样修改.快要验收了哈,十万火急啊,请各位高手帮帮忙哈~
想问一下怎么调整指针移动啊?

是逻辑问题,

你的指针 指到了非法的区域。

调试下你的指针移动吧。

----------------------------------------------------------
这个需要结合你的程序调试。在Debug模式下 看究竟是哪个指针错了。
然后再反推……
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-09-06
说明你的程序在设计的时候有错误
编译只能说明你的语法没有问题

C++编译连接都通过了,可是运行时却莫名其妙终止了~
这个需要结合你的程序调试。在Debug模式下 看究竟是哪个指针错了。然后再反推……

为什么编译正确的c++程序在运行时会停止工作
编译只是保证没有语法错误,但是不能保证你的程序的算法没有错误,如果你的程序中有比较严重的Bug,如果说访问了系统保护的内存,出于保护,windows会中止你的程序,或是抛出一个异常,如果异常没有被捕获并加以处理,程序也会中止,当然,这时你也有机会用调试工具去debug。这种运行期的错误是需要程序员去...

在C++中运行程序,为什么在编译时没有问题,但是回到程序的执行时,就会...
其中最常见的是数组访问越界和野指针问题,当然也有部分野引用问题也会造成运行时崩溃。所以你要通过改变编程风格或者确保每次进行内存的相关操作的时候尽力谨慎。前者可以参考 effective C++ 系列和imperfect C++这些书。另外你编写的代码有很大的问题:Bitnode *gen;\/\/根节点 int sum;全局变量只在本文件有...

C++程序,为什么编译通过了,执行时却出现错误
编译通过是因为你没有语法问题,运行出错是你的程序有逻辑问题,空指针,内存漏洞等程序问题

C++编译通过但是cmd窗口不显示程序直接退出了
一、你的程序是正确的然后你用的是vs编译器,那么你在后面加上system("pause");这样就会显示正常的vc里面显示的Press any key to exit 二、程序有错误。PS :贴代码可以选择 “代码”-> 'C\/C++' . 然后复制粘贴。

DevC++编译成功但是执行时却终止了是什么原因?
1、if-else if-else里面的判断逻辑有问题 2、for循环有问题 3、把你的题目说出来,帮你改。

C++问题,编译无错,运行老是停止工作,求解答
include <iostream>#include <fstream>#include <string>#include <cstring>\/\/\/strcmp()#include <cstdlib>\/\/\/exit(0)using namespace std;bool Login(char str1[20], char str2[20]){ char my_username[4][20];\/\/\/ char my_password[4][20]; static int j=1;\/\/\/静态变量...

...c++和vs 2013 编译全是对的,但一运行就exe停止运行
能编译通过,并不代表你的程序没有任何问题。能编译通过只是说明你的程序没有编译、链接错误,但是不一定没有运行时错误。运行时崩溃大多情况下是非法访问内存造成的,典型如:数组越界、使用了空指针等。

C++链表合并编译正确,运行完跳出终止调试程序的框框
因为你void LinkList::LinkSort(LinkList A,LinkList B)是值传递,这个函数执行完成后A,B就会析构,虽然与原来的A,b是不同的A,B,但后面那些节点地址相同,析构以后链表后面所有节点都释放掉了 然后返回原函数,函数结束后会自动析构A,B,因为这时候first!=NULL(因为是值传递!)又会发生地first...

C++ ,编译好的exe程序,为啥运行完直接退出
直接打开exe文件运行就没有“按任意键继续……”这一说了。用编译器的“运行”键运行程序有那个是编译器加的。程序执行结束后自动退出。

相似回答
大家正在搜