草庐IT

dynamic-memory-allocation

全部标签

c++ - 操作动态内存,重载一个const成员函数有意义吗?

C++Primer5Edition的一个练习让我卡住了,就像Exercise12.3:Doesthisclassneedconstversionsofpush_backandpop_back?Ifso,addthem.Ifnot,whyaren’ttheyneeded?(Page458)下面是类。省略了成员front和back的定义以简化代码。classStrBlob{public:typedefstd::vector::size_typesize_type;StrBlob();StrBlob(std::initializer_listil);size_typesize()const{

C++/QML : How to define and handle multiple contexts for dynamically created components?

基本上我的情况是这样的:我有一个扩展QQuickView的类,它通过设置上下文属性将某些对象从C++公开到QML。显示的View是从QML创建的,并且都是同一定制组件的不同实例;当某些事件发生时会创建新View,当这种情况发生时,现有View应显示最初在C++端分配给它们的对象,而新View应显示分配给它们的对象。所以,在C++方面,我有这样的东西:WindowManager::WindowManager(QQuickView*parent):QQuickView(parent){//Settingthesourcefiletousethis->setSource(QUrl("qrc:

c++ - std::vector<int, std::allocator<char>> 有效吗?

标准没有说明std::vector的分配器但只需要分配器满足Allocator概念。没有关于分配器的value_type,没有reference_type,什么都没有。我以为std::vector内部重新绑定(bind)A到T的分配器,所以我给了一个vectorstd::allocator它按预期工作。但是,如果std::allocator,GCC会生成错误给出,如下:/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.2/include/g++-v4/ext/alloc_traits.h:Ininstantiationof‘struct__gnu_cxx::__

c++ - std::allocator_traits 默认为具有多个模板参数的分配器

std::allocator_traits当我提供一个带有单个模板参数的分配器的STL样式容器时,它会自动发挥它的魔力,但当我提供一个带有两个模板参数但其他方面相似的分配器的STL样式容器时,它不会自动发挥作用。我需要做什么来告诉std::allocator_traits如何与具有多个模板参数的分配器交互?是否有可能获得std::allocator_traits在这种情况下提供合理的默认值?例如,如果我采用HowardHinnant在AllocatorBoilerplate中提供的简单分配器并将其提供给std::vector那么一切都很好。如果我添加一个虚拟intallocator的参

C++ Stack-allocated 对象赋值和析构函数调用

我试图理解在为堆栈上分配的对象分配新值时出现的奇怪行为(对于同一数据集,析构函数被调用两次)。我将从代码片段及其输出开始:classFoo{public:Foo(conststring&name):m_name(name){log("constructor");}~Foo(){log("destructor");}voidhello(){log("hello");}private:stringm_name;voidlog(conststring&msg){cout输出:Foo.0x7fff58c66a58[f1]constructorFoo.0x7fff58c66a58[f1]hell

C++/阿杜伊诺 : dynamic int array

我正在为Arduino编写类(class)。到目前为止一切顺利,但我现在有点卡住了...我已经在我的类中声明了一个int数组classmyClass{public:MyClass(intsize);private:int_intArray[];};当我初始化类MyClassmyClass1(5)时,我需要数组看起来像这样{0,0,0,0,0}。我的问题:我需要做什么才能使数组包含“大小”数量的零?MyClass::MyClass(intsize){//whatgoesheretodynamicallyinitializethearrayfor(inti=0;i编辑:跟进下面的各种回复,

c++ - "All memory allocated on the stack is known at compile time"是什么意思?

阅读thisgreattutorial关于堆栈与堆,我对这句话有疑问:在堆栈上分配的所有内存在编译时都是已知的。我的意思是,如果我处于取决于用户输入的for循环中(i从0到X),并且在for我在堆栈上分配内存(例如创建一些类的新实例并放入类容器中),它不知道编译程序时堆栈将如何增长(它错过了用户的输入)。我是不是误会了什么? 最佳答案 对读者来说,所做的陈述稍微简化了一点。你是对的,堆栈本质上是动态的,实际分配的数量可能因动态输入而异。这是一个带有递归函数的简单示例:voidf(intn){intx=n*10;if(x==0)ret

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

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

c++ - 在 C++ 中存储未知大小的数据

我已经使用PHP大约4年了,但是我遇到了一个问题,它需要稍微(:P)更好的性能,所以我选择了C++。我正在编写的程序是一个Linux守护程序,它将扫描MySQL数据库以查找要加载的URL,使用cURL加载它们,搜索指定的字符串,然后相应地更新数据库。我面临的问题是我不知道需要存储在变量中以便搜索特定字符串的数据大小。我想到了使用链表并在数据填满链表时分配更多节点。这是做事的好方法吗?提前致谢 最佳答案 在C++中,vector类可以存储未知大小的数据。#include#includestd::vectorData;std::stri

c++ - 什么时候需要 dynamic_cast?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:dynamic_castinc++这两种将派生类赋值给基类指针的方式有什么区别?Derivedd1;Base*b1=&d1Derivedd2;Base*b2=dynamic_cast&d2