10得票5回答
std::string的默认容量是多少?

使用默认构造函数创建 std::string 时,是否会在堆上分配任何内存?我希望答案不依赖于实现,并且是标准化的。请考虑以下情况:std::string myString;

10得票5回答
内存分配函数是否表明内存内容不再使用?

处理数据流时,例如来自网络的请求,通常会使用一些临时存储器。例如,URL可能会分成多个字符串,每个字符串可能会从堆中分配内存。这些实体的使用通常是短暂的,总内存量通常相对较小,并且应适合于CPU缓存。 释放临时字符串所使用的内存时,字符串内容可能仅存在于缓存中。然而,CPU不知道内存已被解除...

8得票1回答
C++1y中的内存管理中的Sized Deallocation特性是什么?

提议在C++1y中加入Sized Deallocation功能。然而,我想了解它将如何影响/改善当前C++的底层内存管理? 该提议在N3778中,其中说明了其意图。 使用C++11,程序员可以定义一个静态成员函数operator delete,该函数接受一个大小参数,表示要删除的对象的大小...

7得票1回答
在new表达式中,初始化器是否在内存分配之后被评估?

考虑以下代码: auto p = new T( U(std::move(v)) ); 接下来的初始化程序是U(std::move(v))。假设T( U(std::move(v)) )不会抛出异常。如果在底层内存分配之后评估初始化程序,则代码是强异常安全的。否则,它就不是。如果内存分配抛出...

15得票2回答
std::string::reserve和字符串结尾的0

当使用std::string::reserve进行预分配时,我是否必须显式地添加一个终止的0以避免重新分配和后续复制? 例如,假设知道字符串"Hello"的长度为5将存储在std::string str中,那么我是否需要调用str.reserve(6)? 如果我正确阅读了标准,那么我认为答...

16得票1回答
_int_malloc和malloc(在Valgrind中)有什么区别?

我很惊讶地发现找不到任何文件说明Valgrind的callgrind工具输出中_int_malloc和malloc的区别。 有人能解释一下它们的区别吗? 此外,我实际上编写的是C++代码,因此我专门使用new而不是malloc,但在callgrind输出中只显示了malloc。

28得票6回答
realloc()的正确使用方法

根据realloc函数的说明:realloc()函数会返回一个指向新分配内存的指针,该内存适合于任何类型的变量,并且可能与ptr不同,如果请求失败,则返回NULL。 因此,在这段代码片段中:ptr = (int *) malloc(sizeof(int)); ptr1 = (int *) r...

7得票3回答
无锁更新成员变量的环形分配器?

我是一个帮助翻译的助手。以下是需要翻译的内容: 我有一个类,用于存储某些实时数据的最新值(大约每秒150亿个事件)。 假设它看起来像这样: class DataState { Event latest_event; public: //pushes event ato...

8得票3回答
在C和C++中对齐堆数组以便于编译器(GCC)矢量化

我正在为std::vector设计一个包装容器模板类,它会自动创建一个元素的多分辨率金字塔。 现在的关键问题是,我希望金字塔的创建能够被(GCC) 自动向量化。 所有存储在std::vector和我的分辨率金字塔内部的数据数组都是使用标准new或allocator模板参数在堆上创建的。是否...

9得票1回答
Java数组初始化为零大小

在Java中声明数组时,我们必须使用new关键字动态分配内存。 class array { public static void main(String ars[]) { int A[] = new int[10]; System.out.println(A.lengt...