游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2124|回复: 5

问一个关于new的问题!

[复制链接]

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
发表于 2004-7-21 10:37:00 | 显示全部楼层 |阅读模式
MyParentObject* abc;
Create(MyParentObject* Object)
{
      abc = new MyParentObject;
      memcpy(abc, Object, sizeof(Object));
}
如果将一个由MyParentObject派生来的子类指针传入这个函数,abc被分配到的内存会不会有问题?

26

主题

417

帖子

476

积分

中级会员

总版主

Rank: 3Rank: 3

积分
476
发表于 2004-7-21 10:55:00 | 显示全部楼层

Re:问一个关于new的问题!

If your derived class has been added one or more member variables

May be 'memcpy(abc, Object, sizeof(Object))' will fail [em21] [em15] [em15]

2

主题

35

帖子

35

积分

注册会员

Rank: 2

积分
35
发表于 2004-7-21 11:40:00 | 显示全部楼层

Re:问一个关于new的问题!

有问题

所以COM有个queryinterface

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-7-21 13:18:00 | 显示全部楼层

Re: 问一个关于new的问题!

skice: 问一个关于new的问题!

MyParentObject* abc;
Create(MyParentObject* Object)
{
      abc = new MyParentObject;
      memc...

    会的,如果你的派生类比父类占用的内存要多,那么用子类来填充一块父类的内存,会出现溢出。
    而且,你的函数好像也有问题呢。你new了一块MyParentObject大小的内存,却只memcpy了一个MyParentObject*。
    不清楚你为什么要这样做呢?直接用父类指针来访问子类不能满足需要吗?

1

主题

79

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2004-7-22 10:13:00 | 显示全部楼层

Re:问一个关于new的问题!

sizeof(object)==4,不等于sizeof(MyParentObject),你自已可以检查一下就明白了

3

主题

186

帖子

190

积分

注册会员

Rank: 2

积分
190
发表于 2004-7-22 11:57:00 | 显示全部楼层

Re:问一个关于new的问题!

嗯,楼上说得甚是
sizeof取的是一个指针的大小,WIN32下是4BYTE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-3 22:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表