C++ 怎么得到字符串指针指向的内存块的大小

C++ 怎么得到字符串指针指向的内存块的大小,第1张

唯一的解决办法就是增加一个长度参数

字符串指针指向的内容是空字符结尾的字符串的时候,可以使用strlen来获取指向字符串的大小

但是实际指向内存块的大小,是无法知道的。

这是因为指针在作为参数传递的时候,只传过来了地址值,而没有传过来任何长度信息

实际上指针的长度信息是编译阶段获取的,而函数参数无法包含这种信息,故而不可能从指针参数获得指向空间的大小,即是貌似可以的方法,得到的长度也是不可靠的

sizeof(a)返回的是对象占用内存的字节数,而asize()是string类定义的一个返回字符串大小的函数,两个是完全不一样的概念。

明确两者的概念和作用:

1、size()函数:

c++中,在获取字符串长度时,size()函数与length()函数作用相同。 除此之外,size()函数还可以获取vector类型的长度。

例如:vector < int> num(15,2) ,则:numsize() = 15。

2、sizeof():

sizeof()运算符用来求对象所占内存空间的大小。

假设以下对象,分别使用sizeof函数:

执行输出结果:

扩展资料

sizeof()是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

size是由string vector 和bitset定义的函数,分别用于返回字符个数,元素个数和二进制位的数。string和vector的size成员函数用以返回size_type类型的值。bitset返回size_t的值。

用法,例如string

string st("fddddddddgs");

cout<<"the size of"<<st<<"is"<<stsize();

打印st中的字符个数

size其实就是计算不同类型容器中的元素个数的。

参考资料:

百度百科 sizeof()

你的程序没有任何问题啊。。。看我的输出(ctrl+Z是手动结束符)

vector的大小用vsize();查看,最大容量用vcapacity();查看就可以了。。

Vector是向量类型,你可以在Vector中存储相同数据类型的多个数据,但是你不能初始化Vector的大小或者容量。说白了,Vector就是一个集合,其中可以存储类型相同的多个数据,你存储多少个,Vector的大小就为多少,不能初始化Vector的大小。

这样来声明:

Vector<String> vector = new Vector<String>();

这样向Vector中加入数据:

vectoraddElement(String型的数据);

所有数据加入完成后不要忘了写:

vectortrimToSize();

这样获取Vector的容量或其中存储的数据个数:

int count = vectorsize();

希望我的描述能够对楼主有所帮助!

以上就是关于C++ 怎么得到字符串指针指向的内存块的大小全部的内容,包括:C++ 怎么得到字符串指针指向的内存块的大小、C++ 关于size()和sizeof()、C++中如何输出未知大小的vector对象的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9558679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存