怎么删除指针
TADOQuery * myQuery = new TADOQuery(Application);
//然后给myQuery 赋了值
if(* myQuery != NULL)
delete myQuery;
报错
if( myQuery != NULL)
delete myQuery;
就可以通过编译
有什么不同?
问题点数:8、回复次数:8Top
1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2005-08-01 19:19:42 得分 0
TADOQuery * myQuery = new TADOQuery(Application);
try
{
//Do something
}
__finally
{
myQuery->Free();
}Top
2 楼LocustWei(LocustWei)回复于 2005-08-01 19:47:39 得分 0
* myQuery = TADOQuery
myQuery = @TADOQueryTop
3 楼Nocky(漂流)回复于 2005-08-01 21:18:18 得分 0
if(* myQuery != NULL)
和
if( myQuery != NULL)
是大大不同的,
你的myQuery是一个指针,而(*myQuery)是一个TADOQuery对象,指针其是是一个内存地址,可以看成是一个长整型的数,NULL是在C++与WINDOWS中被定义成
#define NULL 0
TADOQuery对象怎么能跟0比较呢,而myQuery是指针,可当成长整型数与0比较
在C中,NULL被定义成void指针,即
#define NULL ((void*)0)
它已经有了明确的数据类型,就是指针,myQuery与NULL比就是指针与指针比,当然没问题,*myQuery与NULL比肯定类型不匹配Top
4 楼kuang96(Learning C++)回复于 2005-08-01 23:01:09 得分 0
TO dufr ():
学习……Top
5 楼sliverpp()回复于 2005-08-02 08:38:32 得分 0
Nocky(漂流) 是正确的,c++进行比较时要求类型匹配,null是用于指针操作的,不能乱用Top
6 楼raystone(ray)回复于 2005-08-02 08:46:16 得分 0
myQuery是一个指针,而(*myQuery)是一个TADOQuery对象,指针其是是一个内存地址,可以看成是一个长整型的数Top
7 楼YoungMonkey(¤笑熬糨糊¤)回复于 2005-08-02 10:54:02 得分 0
建议使用new、delete加保护机制来管理内存,以避免内存泄漏。
TADOQuery * qry = new TADOQuery(Application);
try
{
//Do Something
}
__finally
{
delete qry;
}
Top
8 楼syd1207(既然选择远方,便只顾风雨兼程。。。)回复于 2005-08-02 10:57:35 得分 0
受教!~Top




