草庐IT

memory-reallocation

全部标签

C++11 memory_order_acquire 和 memory_order_release 语义?

http://en.cppreference.com/w/cpp/atomic/memory_order和其他C++11在线引用资料,将memory_order_acquire和memory_order_release定义为:获取操作:否阅读在当前线程中可以在此加载之前重新排序。发布操作:否写道在当前线程中可以在此存储后重新排序。这似乎允许执行获取后写入之前获取操作,这对我来说也很奇怪(通常获取/释放操作语义限制所有内存操作的移动)。相同的在线资源(http://en.cppreference.com/w/cpp/atomic/atomic_flag)表明可以使用C++原子和上述宽松的

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

c++ - 标准 <memory> 文件中 boost::shared_ptr 和 std::shared_ptr 之间的区别

我想知道boost::shared_ptr之间是否有任何区别和std::shared_ptr在标准中找到文件。 最佳答案 std::shared_ptr是tr1::shared_ptr的C++0x形式,boost的boost::shared_ptr应该表现一样。然而,std::shared_ptr,在符合C++0x标准的实现中,应该/可能对shared_ptr类有更方便的行为,如所述在以下链接中:Differencesbetweendifferentflavoursofshared_ptrhttp://en.wikipedia.or

c++ - 我应该为 memcpy 和 realloc 包含什么标题?

我正在将一个项目移植到iPhone,它使用了未找到的realloc和memcpy。要包含的标题是什么?这是一个混合了ObjectiveC和C++的项目,我开始迷路了。提前感谢您的帮助! 最佳答案 在C中:#include//memcpy#include//realloc在C++中,删除.h和前缀为c。在C++中,它们将被放置在std命名空间中,但也是全局的。 关于c++-我应该为memcpy和realloc包含什么标题?,我们在StackOverflow上找到一个类似的问题:

c++ - 我应该为 memcpy 和 realloc 包含什么标题?

我正在将一个项目移植到iPhone,它使用了未找到的realloc和memcpy。要包含的标题是什么?这是一个混合了ObjectiveC和C++的项目,我开始迷路了。提前感谢您的帮助! 最佳答案 在C中:#include//memcpy#include//realloc在C++中,删除.h和前缀为c。在C++中,它们将被放置在std命名空间中,但也是全局的。 关于c++-我应该为memcpy和realloc包含什么标题?,我们在StackOverflow上找到一个类似的问题:

c++ - 增加容量时,std::vector *有*移动对象吗?或者,分配器可以 "reallocate"吗?

一个differentquestion启发了以下想法:std::vector有在增加容量时移动所有元素吗?据我了解,标准行为是底层分配器请求新大小的整个block,然后移动所有旧元素,然后销毁旧元素,然后释放旧内存。考虑到标准分配器接口(interface),这种行为似乎是唯一可能的正确解决方案。但我想知道,修改分配器以提供一个reallocate(std::size_t)函数是否有意义,该函数将返回一个pair并且可以映射到底层的realloc()?这样做的好处是,如果操作系统实际上可以扩展分配的内存,那么根本不需要移动。bool值将指示内存是否已移动。(std::realloc()

c++ - 增加容量时,std::vector *有*移动对象吗?或者,分配器可以 "reallocate"吗?

一个differentquestion启发了以下想法:std::vector有在增加容量时移动所有元素吗?据我了解,标准行为是底层分配器请求新大小的整个block,然后移动所有旧元素,然后销毁旧元素,然后释放旧内存。考虑到标准分配器接口(interface),这种行为似乎是唯一可能的正确解决方案。但我想知道,修改分配器以提供一个reallocate(std::size_t)函数是否有意义,该函数将返回一个pair并且可以映射到底层的realloc()?这样做的好处是,如果操作系统实际上可以扩展分配的内存,那么根本不需要移动。bool值将指示内存是否已移动。(std::realloc()

c++ - 为什么 std::begin 和 std::end "not memory safe"?

在thisblogpost,EricNiebler指出:Whatiswrongwithstd::beginandstd::end?Surprise!theyarenotmemorysafe.Considerwhatthiscodedoes:externstd::vectorget_data();autoit=std::begin(get_data());inti=*it;//BOOMstd::beginhastwooverloadsforconstandnon-constlvalues.Troubleis,rvaluesbindtoconstlvaluereferences,leadi

c++ - 为什么 std::begin 和 std::end "not memory safe"?

在thisblogpost,EricNiebler指出:Whatiswrongwithstd::beginandstd::end?Surprise!theyarenotmemorysafe.Considerwhatthiscodedoes:externstd::vectorget_data();autoit=std::begin(get_data());inti=*it;//BOOMstd::beginhastwooverloadsforconstandnon-constlvalues.Troubleis,rvaluesbindtoconstlvaluereferences,leadi

memory-management - 如何在 go 编程语言中为数组分配内存?

我想在go中创建一个大小为N的数组,但我不知道编译时N会是多少,我该如何为其分配内存?例如funcMakeArray(sizeint){returnnew([size]int)}这不起作用,因为大小不是常数。这似乎是一个简单的问题,但我刚开始使用go,通过阅读教程(或搜索相关文档)对我来说如何做到这一点并不明显。 最佳答案 make函数创建slice、映射和channel,并返回T类型的初始化值。make()调用分配一个新的隐藏数组返回的slice值所指的。packagemainimport"fmt"funcmain(){ptr:=