免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2678 | 回复: 2
打印 上一主题 下一主题

[C++] delete有误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-07 18:25 |显示全部楼层 |倒序浏览
5可用积分
#include<new>
#include<stdlib.h>
#include <stdio.h>
using namespace std;
class object
{
public:
&nbsp;&nbsp;&nbsp;&nbsp;int x;
&nbsp;&nbsp;&nbsp;&nbsp;object():x(4){ }
};
const int iObjNum = 10;
int main(int argc, char * argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;char * ptr = (char*) malloc(iObjNum*sizeof(object));
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;object *pObj[iObjNum];&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0; i<iObjNum; ++i)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pObj[i]=new (ptr+i*sizeof(object)) object;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;for (int j=0; j<iObjNum; ++j)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete pObj[j];
&nbsp;&nbsp;&nbsp;&nbsp;}   
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}







谁能告诉我正确用法么?

[ 本帖最后由 ghostgorst 于 2009-8-7 18:29 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-08-07 18:36 |显示全部楼层

回复 #2 syncpk99 的帖子

D:\Program Files\Microsoft Visual Studio\VC98\Include\NEW


#ifndef __PLACEMENT_NEW_INLINE
#define __PLACEMENT_NEW_INLINE
inline void *__cdecl operator new(size_t, void *_P)
        {return (_P); }
#if     _MSC_VER >= 1200
inline void __cdecl operator delete(void *, void *)
        {return; }
#endif
#endif

我就是想弄明白这对new/delete用法

论坛徽章:
0
3 [报告]
发表于 2009-08-07 18:53 |显示全部楼层

回复 #5 bruceteen 的帖子

#include<new>
#include<stdlib.h>
#include <stdio.h>
using namespace std;
class object
{
public:
        int x;
        object()(4){ }
};
const int iObjNum = 10;
int main(int argc, char * argv[])
{
       
    char * ptr = new char[iObjNum*sizeof(object)];
   
        object *pObj[iObjNum];       
    for(int i=0; i<iObjNum; ++i)
    {
        pObj=new (ptr+i*sizeof(object)) object;               
    }
    for (int j=0; j<iObjNum; ++j)
    {
        delete pObj[j];
    }  
       
    return 0;
}


这样也还是出错啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP