草庐IT

信道分配

全部标签

c++ - Qt如何处理堆栈分配的对象

我不明白Qt如何删除QObject的所有子对象而不删除静态分配的内容。基本上,如果我按照通常的方式做,它看起来像这样:QWidgetWindow(nullptr);QPushButton*button=newQPushButton(&Window);Window.show();returnApp.exec();//Whenappends,Windowgetsdeleted//becauseitwasstaticallyallocated//Andthen,Windowdeletesbuttonbecauseit'sitschild.但我也可以做到这一点而不会崩溃:QWidgetWind

c++ - 堆分配数组的基于范围的for循环

考虑以下代码,它会准确地计算出success三次:intarr[3];for(int&value:arr)std::cout如果我尝试在堆上分配数组,就会出现问题。此代码无法编译:int*ptr=newint[3];for(int&value:*ptr)std::cout由于指针被取消引用,类型应该相同。所以我有一些问题:whenIaskfromthehardware这两种表达方式之间的根本区别是什么?我想了解为什么后者没有意义。我可以通过一个小改动让它工作吗? 最佳答案 Sincethepointerwasdereferenced

c++ - 为动态分配的指针数组的所有元素赋值?

我有一个包含两个元素的指针数组(ptrArr1)。我希望动态分配指针数组。我可以很好地为指针数组的第一个元素分配地址,但我不知道如何为指针数组的第二个元素分配地址。我不想使用任何STL或其他预编码函数。我正在做这个练习来增强我对指针的理解。谢谢。intmain(){intone=1;inttwo=2;int*ptrArr1=newint[2];ptrArr1=&one;ptrArr1[1]=&two;//doesnotworkptrArr1+1=&two;//doesnotworkdelete[]ptrArr1;return0;} 最佳答案

c++ - 如何分配/检索基类?

假设我有:classFoo{...};classBar:publicFoo{...};Foofoo;Barbar;有没有办法做到以下几点:foo_part_of_bar(bar)=foo;foo=foo_part_of_bar(bar);?谢谢! 最佳答案 假设您的意思是classBar:publicFoo,下面的代码应该可以工作。对于foo_part_of_bar(bar)=foo;*(static_cast(&bar))=foo;对于foo=foo_part_of_bar(bar);foo=bar;

c++ - 保留容量会导致两次分配还是一次分配?

std::vectorvec;//line#1vec.reserve(100);//line#2我想知道第1行是否触发了一个小的分配(例如,10Ts的内存),或者第一个分配是否发生在第2行。标准对此有任何说明吗? 最佳答案 它是实现定义的。vector的默认构造函数不需要分配任何东西,但实现这样做是允许的。 关于c++-保留容量会导致两次分配还是一次分配?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - GCC 用于 STL 的默认分配器是什么?

根据this链接,gcc提供了许多与STL容器一起使用的有趣的内存分配器,但如果我在创建std::list时没有指定一个,默认情况下会使用它? 最佳答案 正如您链接到的页面上所说,Thecurrentdefaultchoiceforallocatoris__gnu_cxx::new_allocator.即,默认分配器基本上只是operatornew。 关于c++-GCC用于STL的默认分配器是什么?,我们在StackOverflow上找到一个类似的问题: ht

c++ - 可以在地址 0 分配一个有效的指针吗?

在任何“主要平台”(出于这个问题的目的,我将其定义为Windows、Mac和Linux)上,是否可以将有效分配的指针分配到程序地址空间中的地址0(因此弄乱了与NULL的比较?)该标准甚至允许编译器/平台在地址0处进行有效分配吗? 最佳答案 C++标准允许这样做,但这样的指针不会与文字0(NULL指针常量)进行比较。但是,主要操作系统中的用户模式应用程序永远不会有一个位于0的有效指针,甚至在-65536到65535范围内(以帮助检测NULL指针的偏移量)。在大多数情况下,0作为可用地址只存在于嵌入式系统中,很少出现在PC操作系统的内核

c++ - 防止重新分配引用?

考虑在某个地方的某个库中(我们无权更改),我们有一个Counter类:classCounter{intcount;public:Counter():count(0){}voidbump(){++count;}intgetCount()const{returncount;}};就其本质而言,它是可变的。如果它是const,它就毫无值(value)。在我们的代码中,我们“使用”了那个计数器。很糟糕。#include#include#includeusingstd::cout;usingstd::endl;voidbreakTheHellOutOfCounter(Counter&c){//T

c++ - 动态内存分配会降低性能吗?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我浏览了videobyBjarneStroustrup他解释了为什么要避免链接列表。基本上,当使用指针动态分配内存时,缓存未命中的次数会增加,从而降低性能。但是,如果将同样的事情应用于树和图等非线性数据结构,同样的事情是否成立?因为,在树中,每个节点也有两个指针,指针的随机移动同样会导致缓存未命中。但是,树已被证明比线性数据结构表现更好。当然,树也可以使用数组来实现,但同样会消耗大量内存。我的问题是:动态

c++ - 内存分配和字符数组

我还是不太明白,到底会发生什么情况:inti=0;for(i;isome_array会充当:some_array=malloc(24);在循环的开始和free(some_array)在循环结束时?或者那些变量会在栈中分配,函数结束后销毁? 最佳答案 some_array对于block是局部的,因此它在循环的每次迭代开始时创建,并在循环的每次迭代结束时再次销毁。对于一个简单的数组,“创建”和“销毁”意义不大。如果(在C++中)您将它替换为(例如)一个在创建和销毁时打印出某些内容的对象,您会看到这些副作用发生了。