sizeof string

?





1

2

3

4

5

char
a[] = "hello";

string s = "hello";

cout<<sizeof(a)<<endl;

cout<<sizeof(s)<<endl;

cout<<sizeof(s.c_str())<<endl;

  输出为

?





1

2

3

6

32

4

最后一个c_str返回的是char*,所有指针的长度都为4。sizeof(s)为什么为32?

查了一下,因为string是一个对象,这里相当于求一个对象的空间大小,具体内容应该是指针指向,动态分配。所以无论s有多少,返回的都是32.

时间: 2024-12-06 10:47:51

sizeof string的相关文章

从sizeof(string)到引用计数的漫游

前言: 说是漫游,其实就是扯,一点一点的扯. 话说之前参加华为的德州扑克比赛,我用C++解析消息的时候碰到一个小问题,就是定长收消息的时候出错,在Linux下调了很久很久,终于发现,sizeof(string)不是string的size,而是string类型的大小.当然,用string.size()就可以轻松解决了,而作品也在昨晚提交了,不过,交的是python的.我的C++程序,送给了两支队伍,让他们去参赛,可惜,白眼狼. 既然有闲暇时间了,那么就要深究一下,sizeof(string)是个什

C++中sizeof(string)

上代码: // test_max.cpp : 定义控制台应用程序的入口点. #include "stdafx.h" #include <iostream> #include <string> using namespace std; int main(void) { string strArr1[]={"Cjc ","is ","a "}; string *pStrArr1=new string[2];

sizeof(string)的问题(很经典)

今天看到一个代码,刚开始没有看明白,代码如下: <span style="font-size:14px;">#include<iostream> #include<string> using namespace std; void main() { string a="www.ok2002.com"; string b=" study C++ program"; a.append(b,0,sizeof(b)+2

sizeof/strlen/length

1.sizeof() sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小. 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系. 具体而言,当参数分别如下时,sizeof返回的值表示的含义如下: 数组—

实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串同样. 这就看到了吧,返回值是const char*,这里须要注意一下. 1 string转const char* 当然是用到上面所述的方法c_str(): string s1 = "abcdeg"; const char *k =

对sizeof的思考

一.sizeof的特点(与strlen比较) 1.sizeof是运算符,strlen是函数,这意味着编译程序在编译的时候就把sizeof计算过了,所以sizeof(x)可以用来定义数组维数. 例如 int arr[sizeof(int)];//相当于int arr[4]; 2.sizeof能够返回变量或类型所占的字节空间大小,而strlen只能够返回字符串的大小,即字符串必须以'\0'结尾. char str[20]="0123456789"; int a=strlen(str); /

C/C++ 知识点---sizeof使用规则及陷阱分析

原文:http://blog.csdn.net/chenqi514/article/details/7245273 1.什么是sizeof 首先看一下sizeof在msdn上的定义:     The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value o

C语言中sizeof的用法

今天同学问我sizeof可不可以计算结构体的大小,我竟然忘了C语言还有sizeof这个函数,我是多久没有写程序了啊!!!惭愧,上研究生后写嵌入式方面的程序就特别少了,看来以后还要经常来练练手才行.现在转载一篇看到的sizeof用法的文章,与大家分享(第一篇技术类的文章竟然是转载的,惭愧). #include "stdio.h" #include "string.h" #include "stdlib.h" int main() { short i

sizeof 运算结果与编译系统有关

研究与实现相关的layout没多大意义 参考:有关c++中类的虚拟继承sizeof问题 class A{}; sizeof(A);问sizeof结果? 对空类运用sizoef operator,表达式结果是多少?不是0,空类中没有信息,但实例仍需要在内存中有一些信息,这样才能使用,类的内存布局由编译器决定,vs中占用1字节.如果空类中含有虚函数,在类的实例中会添加指向虚函数的指针,指针在32位机器上占用4bytes,64(x64编译模式)位占用8字节.int在c++标准中没有规定具体大小,所以在