您的位置:首页 > 编程语言 > C语言/C++

C++ primer 总结(sizeof,delete,new)

2010-08-26 17:24 253 查看
size_t是一种与机器相关的typedef定义;

// ia = sizeof int; // 错误
ia = sizeof( int ); // ok
int *pi = new int[ 12 ];
cout << "pi: " << sizeof( pi )
<< " *pi: " << sizeof( *pi )
<< endl; 运行结果是pi:4 *pi:4,第一个因为是指针大小,所以是4,第二个我就有点不解,第二个是什么意思呢?

一个string 的大小与它所指的字符串的长度无关。比如 以下代码的输出都是16。 string st1( "foobar" );
string st2( "a mighty oak" );
string *ps = &st1;
cout << "st1: " << sizeof( st1 )
<< " st2: " << sizeof( st2 )
<< " *ps: " << sizeof( *ps )
<< endl;

sizeof 操作符在编译时刻计算,因此被看作是常量表达式。

new 表达式返回指向新分配的对象的指针.

int *pi = new int( 1024 );(delete pi;)
它不但分配了这个对象而且用1024 将其初始化.

int *pia = new int[ 10 ];(对应于delete []pia;)
它从空闲存储区中分配了一个数组其中含有10 个int 型对象,并用它的地址初始化pia,而数组的元素没有被初始化.

delete 表达式应用在指向我们用new 表达式分配的对象指针上来做到这一点delete 表达式不应该被应用在不是通过new 表达式分配的指针上.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: