| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1207 人关注过本帖
标题:[求助]布局new操作符的问题
只看楼主 加入收藏
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
收藏
 问题点数:0 回复次数:19 
[求助]布局new操作符的问题

class Test
{
..........
}

int main()
{
char* buffer=new char[512];
Test *pc1;
pc1=new (buffer)Test;//what does it mean?
..................

搜索更多相关主题的帖子: 操作符 new 
2006-07-25 11:11
michaelsoft
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-7-13
收藏
得分:0 
布局new

2006-07-25 11:24
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

首先:
char* buffer=new char[512];
这里动态分配了512g个char的内存空间A。
pc1=new (buffer)Test;占用以是A的首地址为起点A的空间。

也就是说,比如空间A占的地址是:
0x000000 0x000004 0x000008 0x00000c
假设Test的类是这样的:
class Test{public:int a;int b;}
那么上面的表达式:
Test中a,b占用的空间是A的,a的地址&a其实就是&buffer[0].
由于一个int增加4,所以b的地址&b就是&buffer[0+4];
理解意思了?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-25 11:26
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
Test中a,b占用的空间是A的,a的地址&a其实就是&buffer[0].//也就是0x000000
由于一个int增加4,所以b的地址&b就是&buffer[0+4]; //也就是0x000004

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-25 11:30
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
说的对,以前问过,大家都消化了

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-07-25 15:13
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
以下是引用wfpb在2006-7-25 11:26:54的发言:

首先:
char* buffer=new char[512];
这里动态分配了512g个char的内存空间A。
pc1=new (buffer)Test;占用以是A的首地址为起点A的空间。

也就是说,比如空间A占的地址是:
0x000000 0x000004 0x000008 0x00000c
假设Test的类是这样的:
class Test{public:int a;int b;}
那么上面的表达式:
Test中a,b占用的空间是A的,a的地址&a其实就是&buffer[0].
由于一个int增加4,所以b的地址&b就是&buffer[0+4];
理解意思了?

正确


c++/C + 汇编 = 天下无敌
2006-07-25 15:28
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
以下是引用michaelsoft在2006-7-25 11:24:56的发言:
布局new

应该说new定位操作符号, 因为是 placement new


c++/C + 汇编 = 天下无敌
2006-07-25 15:29
nick_annie
Rank: 1
等 级:新手上路
帖 子:105
专家分:0
注 册:2005-11-19
收藏
得分:0 
恩..基本理解了

2006-07-25 15:34
michaelsoft
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2006-7-13
收藏
得分:0 
以下是引用热情依然在2006-7-25 15:29:06的发言:

应该说new定位操作符号, 因为是 placement new

说就说“placement new”,很多术语还是不翻译的好,影响交流,比如著名的"inline function"。。。


2006-07-25 15:39
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
以下是引用michaelsoft在2006-7-25 15:39:22的发言:

说就说“placement new”,很多术语还是不翻译的好,影响交流,比如著名的"inline function"。。。

深有同感


c++/C + 汇编 = 天下无敌
2006-07-25 15:46
快速回复:[求助]布局new操作符的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017073 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved