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

QT高手帮小弟看看下面这段代码!感激不尽,该如何处理

2012-02-17 
QT高手帮小弟看看下面这段代码!!感激不尽[codeC/C++][/code]/*声明结构体*/typedef struct Node{QString

QT高手帮小弟看看下面这段代码!!感激不尽
[code=C/C++][/code]
/*声明结构体*/
typedef struct Node
{
QString Name;
QString MobileNumber;
QString HomeNumber;
QString Mail;
QString Fax;
QString Address;
struct Node *next;
}node;


node *s = NULL;
  s = (node *)malloc(sizeof(node));
  s->Name = nameLine->text();
  s->MobileNumber = mobileNumberLine->text();//每次读到这以后就会出现段错误,将这句往后都屏蔽就没事。。找好久了没发现为什么,请高手帮忙
  s->HomeNumber = homeNumberLine->text();
  s->Mail = EmailLine->text();
  s->Fax = postNumberLine->text();
  s->Address = addressText->toPlainText();
 

[解决办法]
多半是因为空指针,仔细查一下吧。
[解决办法]
s->MobileNumber = mobileNumberLine->text();
在这句前面添加:
if(mobileNumberLine == NULL) {
 
}
[解决办法]
先看看mobileNumberLine是不是空。
[解决办法]
if (mobileNumberLine == NULL)
加它也不可以吗?
[解决办法]
把帖子移动到c/c++板块->qt开发区问问.
[解决办法]
QT是搞诺基亚的吧?
[解决办法]
node *s = NULL;
s = (node *)malloc(sizeof(node));

这个分配方法是错的
要用s = new node;
[解决办法]
我在Linux下QT3做了试验,没有出现任何问题,程序通过,运行正常。

关于new 和malloc,我想说的是,new确实是调用了malloc和类的构造函数,但是这个,编译器为struct Node自动添加的默认构造函数,肯定只是调用各QString成员变量的默认构造函数。

注意:s->MobileNumber = mobileNumberLine->text()
这里肯定会调用QString的赋值构造函数,我没有看QT的源码,但是我觉得QT这种成熟的库,会在赋值函数里对存储空间进行检查和扩充,所以这里不应当有问题。

至于这个段错误的问题,究竟是怎么发生的,我觉得可以通过多次地屏蔽代码来调试。

热点排行