草庐IT

占用过高

全部标签

c++ - 技术上对象可以占用不连续的存储字节吗?

在回答thisquestion时我被要求提供标准报价。我在C++14草案中震惊地发现:§3.9Types[basic.types]TheobjectrepresentationofanobjectoftypeTisthesequenceofNunsignedcharobjectstakenupbytheobjectoftypeT,whereNequalssizeof(T)嗯..它并没有说“无符号字符对象”在内存中必须是连续的。也许它是由“顺序”暗示的。然后我发现了一个特别提到的“存储的连续字节”,但是......§1.8TheC++objectmodel[intro.object][.

c++ - 删除元素后 std::string 容量保持不变,那么它是否占用了一些内存?

下面这段代码:stringa="abc";cout...输出:33即使我从字符串中删除一些元素,容量也保持不变。所以我的问题是:是否有一些内存因为容量问题而被占用?如果我没有明确地reserve()怎么办?如果我使用reserve()并且没有用完整个容量,我是不是在浪费内存?如果需要,这些额外的内存(我没有使用)是否会分配给其他东西?编辑:假设我有stringa="something";a="ab";现在我知道a永远不会超过两个字符。那么调用reserve(2)这样内存就不会被浪费是明智的吗? 最佳答案 我先回答你的问题:内存属于字

c++ - 实际上,C++11 中 std::atomic 的内存占用是多少?

我正在编写的一个程序需要在ram中存储大量数据(几千兆字节)以供多个线程原子访问。std::atomic似乎是一种合理的方式来做到这一点,因为它的访问可能比将所有访问包装在一个或多个std::mutex中更有效。s,因为,最坏的情况下,它将在内部使用互斥量并且是等效的。我的数据组织为一组Chunk对象,除其他外,它们有一个包含大部分数据的数组成员。现在,我正在考虑将其定义为std::array,SOME_CONSTANT_HERE>,但这只有在内存占用为std::atomic时才会有效在内置类型上,例如unsignedint不比unsignedint差本身,因为根据我的计算,以我需要存

c++ - 额外的函数/方法定义会增加程序的内存占用吗?

在C++中,定义未使用的额外方法或函数是否会导致更大的内存占用或更慢的执行速度?基本上,我在一个类中有几个实用调试方法,没有一个是正常使用类所必需的。如果从未使用过这些定义,是否会保留这些定义,在内存占用或速度方面会有所不同吗?例如:classmyClass{public://SomethingtheuserofthisclasswoulduseintdoSomething(){...}//SomethingusedsolelytomakesureIwrotetheclassproperlyboolisClassValid(){...}};...myClassclassInstance

c++ - 1000个共享指针占用多少内存?

(例如)1000个共享指针需要多少内存?是16x1000字节吗?32位和64位系统有什么不同吗? 最佳答案 在典型的实现中,std::shared_ptrholdsonlytwopointers.因此1000个共享指针占用1000*2*sizeof(pointer)字节的内存。在遵循ILP32数据模型的所有32位系统上,指针的大小为4个字节。在遵循LP64数据模型(大多数Unix和类Unix系统)或LLP64数据模型(MicrosoftWindowsx86-64)的64位系统上,指针的大小为8个字节。注意:控制block的大小(取决

c++ - 小 N 的 std::map 与 unordered_map 内存占用

对于内存使用比速度更重要的嵌入式系统应用程序,最好使用什么map容器?std::map,std::unordered_map?这适用于N小于一百的情况。如果实现很重要,那么我会关注libstdc++实现(GCC)。虽然我知道在内存使用方面不可能超过简单的数组,但我想避免使用具有O(N)性能的数据结构。因此,虽然我想减少内存占用,但我也希望查找速度合理(优于O(N))。我不关心其他操作(插入、删除),因为它们很少发生。如果我想自己测量内存使用情况,我应该如何在Linux平台上进行测量?会boost::flat_map适合作为占用空间小且查找时间优于O(n)的关联容器吗?

c++ - 具有虚函数的类占用更多空间

有这样的代码:#includeclassA{inta;intfun(){}};classB{inta;virtualintfun(){}};intmain(){std::cout输出是:48为什么B类比A类大4个字节? 最佳答案 任何具有虚函数的类都需要一个指向该类虚函数表的指针。因此,有一个隐藏成员,即指针的大小。http://en.wikipedia.org/wiki/Virtual_method_table 关于c++-具有虚函数的类占用更多空间,我们在StackOverflow上

oracle查看具体表占用空间 & oracle查看表属于哪个用户

文章目录前言oracle查看具体表占用空间1、查看表空间总大小、使用率、剩余空间2、查看所有表的占用空间大小3、查看表空间对应日志文件4、查看所有表空间的总容量5、查询表所属哪个空间oracle查看表属于哪个用户1、oracle怎么查看表属于哪个用户2、Oracle查询视图所属用户3、Oracle查询存储过程所属用户总结前言表空间是数据库的逻辑组成部分从物理上讲:数据库数据存放在数据文件中从逻辑上讲:数据库则是存放在表空间中表空间由一个或是多个数据文件组成oracle查看具体表占用空间1、查看表空间总大小、使用率、剩余空间SELECT--B.file_name"文件名",A.TABLESPAC

Linux 查看进程PID和线程CPU和内存占用情况

1.找到进程号[root@localhost~]#ps-ef|grepredisredis14161010:15?00:00:02/www/server/redis/src/redis-server0.0.0.0:6379root1143610369010:52pts/000:00:00grep--color=autoredis2.查看CPU和内存[root@localhost~]#top-p1416#按H,继续按qTasks:1total,1running,0sleeping,0stopped,0zombie%Cpu(s):64.0us,5.4sy,0.0ni,30.6id,0.0wa,0.

c++ - 当编译时已知引用占用非聚合结构中的空间时,是否错过了优化?

注意:这是一个后续问题:Isitamissedoptimization,whenacompile-timeknownreferencetakesspaceinastruct?,这表明聚合初始化可以将b的默认初始化替换为对a的引用,方法是使它成为对某个其他变量的引用。这个问题是关于当聚合初始化不可能时会发生什么。看这个例子:structFoo{inta;int&b;Foo():b(a){}};如果sizeof(Foo)!=sizeof(int)是否错过了优化?我的意思是,编译器能否从结构中删除b,因为它总是引用a?有什么可以阻止编译器进行这种转换吗?(注意,structFoo看起来就是这