• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++void*类型转换deletevoid*

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;
 4 const int N=1e5+10;
 5 const int INF=0x3f3f3f3f;
 6 int cas=1,T;
 7 struct node{
 8     int *p;
 9     ~node()
10     {
11         cout<<"~node()\n";
12         if(p) delete p;
13     }
14 };
15 int main()
16 {
17     void * a=new float(3.0);
18     printf("%d %d\n",*((int*)a),(int)(*(float*)a));
19     delete a;
20     printf("%d %d\n",*((int*)a),(int)(*(float*)a));
21     a=new long long(3);
22     printf("%d %d\n",*((int*)a),(int)(*(long long*)a));
23     delete a;
24     printf("%d %d\n",*((int*)a),(int)(*(long long*)a));
25     node *b=new node;
26     b->p=new int(4);
27     int *c=b->p;
28     a=b;
29     delete a;
30     printf("p:%p\n",((node*)a)->p);
31     printf("%d\n",*c);
32     return 0;
test.cpp
 1 请按 ENTER 或其它命令继续
 2 test.cpp: In function ‘int main()’:
 3 test.cpp:19:9: warning: deleting ‘void*’ is undefined [-Wdelete-incomplete]
 4   delete a;
 5          ^
 6 test.cpp:23:9: warning: deleting ‘void*’ is undefined [-Wdelete-incomplete]
 7   delete a;
 8          ^
 9 test.cpp:29:9: warning: deleting ‘void*’ is undefined [-Wdelete-incomplete]
10   delete a;
11          ^
12 
13 请按 ENTER 或其它命令继续
14 1077936128 3
15 0 0
16 3 3
17 0 0
18 p:(nil)
19 4
20 
21 请按 ENTER 或其它命令继续
result

 

void *a 原来的类型是float型,存的值是3.0,然后*((int*)a)直接强制将指针类型转成int*之后输出的值不是3,但(int)(*((float*)a))将a转成float*之后再将值转成(int)输出的值就是3了,说明void*指针强制转换后还是会读到原来的二进制,没有进行指针所指向的值的转换

delete a之后两个值都为0说明delete void能成功delete void*成功,后面的结构体没有输出~node()说明没有调用自定义类型的~node()函数,只是将该指针指向的内存free调,也说明系统会记住一个指针所指向的内存的大小

后面的long long结果不变说明void*强制转换时如果大小不一样采用尾截法取指向的内存


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c++builder字节编码转换大全StringTBytesbyte发布时间:2022-07-13
下一篇:
C/C++的const区别发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap