指针

maxxammmm 2014-04-25 07:52:38

PointMatch 是一个结构体。
问题有两个:
1.第一句话是什么意思?后面的1是什么意思?它等价于什么样的语句/
2.运行至第二句delete的时候就会报错,这是为什么?应该怎么写?

在线等,谢谢!
...全文
209 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxxammmm 2014-05-16
  • 打赏
  • 举报
回复
引用 11 楼 xiaojunjun1202 的回复:
[quote=引用 楼主 maxxammmm 的回复:] PointMatch 是一个结构体。 问题有两个: 1.第一句话是什么意思?后面的1是什么意思?它等价于什么样的语句/ 2.运行至第二句delete的时候就会报错,这是为什么?应该怎么写? 在线等,谢谢!
PointMatch * pPointMatch = (PointMatch *) 1; //等价于 int nData = 1; PointMatch * pPointMatch = (PointMatch *) nData ; delete pPointMatch ;的意思是你要去 删除 nData 这一块 内存。 好,分2点来说明: 1 、 nData 这块内存是在哪里分配的? 栈上分配的。 2、 delete 要释放的内存是哪里分配的? 堆上分配的内存才能用delete释放。 楼主,你真是 办蛮 要 delete 堆上的内存呀?怎么可能不崩溃哦!! [/quote] 谢谢,可惜我的分数太少了,不知道怎么分配了,谢谢大家!
maxxammmm 2014-05-16
  • 打赏
  • 举报
回复
引用 8 楼 aasmfox 的回复:
new 出来的东西,才能delete 。
是的!
天朗-星空 2014-04-29
  • 打赏
  • 举报
回复
(PointMatch*)1是强制类型转换,把地址为0x000000001空间转化为基类型为PointMatch的指针
qc437700093 2014-04-29
  • 打赏
  • 举报
回复
为什么非要强行指定地址?
xiaojunjun1202 2014-04-29
  • 打赏
  • 举报
回复
擦,写错一个字。 楼主,你真是 办蛮 要 delete 上的内存呀?怎么可能不崩溃哦!!
xiaojunjun1202 2014-04-29
  • 打赏
  • 举报
回复
引用 楼主 maxxammmm 的回复:
PointMatch 是一个结构体。 问题有两个: 1.第一句话是什么意思?后面的1是什么意思?它等价于什么样的语句/ 2.运行至第二句delete的时候就会报错,这是为什么?应该怎么写? 在线等,谢谢!
PointMatch * pPointMatch = (PointMatch *) 1; //等价于 int nData = 1; PointMatch * pPointMatch = (PointMatch *) nData ; delete pPointMatch ;的意思是你要去 删除 nData 这一块 内存。 好,分2点来说明: 1 、 nData 这块内存是在哪里分配的? 栈上分配的。 2、 delete 要释放的内存是哪里分配的? 堆上分配的内存才能用delete释放。 楼主,你真是 办蛮 要 delete 堆上的内存呀?怎么可能不崩溃哦!!
xiaojunjun1202 2014-04-29
  • 打赏
  • 举报
回复
呵呵 看看。。。
lis2012 2014-04-27
  • 打赏
  • 举报
回复
new 和delete 要对应才行
C++实习生 2014-04-27
  • 打赏
  • 举报
回复
new 出来的东西,才能delete 。
rxguoblp 2014-04-26
  • 打赏
  • 举报
回复
引用 5 楼 maxxammmm 的回复:
[quote=引用 4 楼 rxguoblp 的回复:] (PointMatch*)用于强制类型转换,从语法角度来讲:“1”是被强制转换的对象,它代表一个内存地址(请参考指针的定义)。 你这么强转是否成功取决于你的结构体中定义了什么元素。
我刚看了下PointMatch这句话执行之后该指针的地址为0x000000001啥的[/quote] 这就对了呀,说明强转成功,不过你这么做风险太大,一般不能酱紫搞。
wolf8sheep 2014-04-25
  • 打赏
  • 举报
回复
地址1是不允许你delete的。
maxxammmm 2014-04-25
  • 打赏
  • 举报
回复
引用 4 楼 rxguoblp 的回复:
(PointMatch*)用于强制类型转换,从语法角度来讲:“1”是被强制转换的对象,它代表一个内存地址(请参考指针的定义)。 你这么强转是否成功取决于你的结构体中定义了什么元素。
我刚看了下PointMatch这句话执行之后该指针的地址为0x000000001啥的
rxguoblp 2014-04-25
  • 打赏
  • 举报
回复
(PointMatch*)用于强制类型转换,从语法角度来讲:“1”是被强制转换的对象,它代表一个内存地址(请参考指针的定义)。 你这么强转是否成功取决于你的结构体中定义了什么元素。
maxxammmm 2014-04-25
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
new 出来的才有delete (PointMatch*)=1; 就是说把内存地址为1的地方,转换为 (PointMatch*) 指针 (这是非法指针!)
就是说把内存地址为1的地方,转换为 (PointMatch*) 指针 这句话不明白,
schlafenhamster 2014-04-25
  • 打赏
  • 举报
回复
new 出来的才有delete (PointMatch*)=1; 就是说把内存地址为1的地方,转换为 (PointMatch*) 指针 (这是非法指针!)
maxxammmm 2014-04-25
  • 打赏
  • 举报
回复
顶,在线等,请大家帮忙

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧