草庐IT

pg_free_result

全部标签

c++ - malloc 和 free 是如何实现的?

我想实现自己的动态内存管理系统,以便添加有助于在C++中管理内存的新功能。我使用Windows(XP)和Linux(Ubuntu)。实现“malloc”和“free”等功能需要什么?我认为我必须使用最低级别的系统调用。对于Windows,我找到了函数:GetProcessHeap、HeapAlloc、HeapCreate、HeapDestroy和HeapFree。对于Linux,我没有发现任何用于堆管理的系统调用。在Linux上,malloc和free是系统调用,不是吗?谢谢编辑:C++不提供垃圾收集器,垃圾收集器很慢。有些分配很容易释放,但有些分配需要垃圾收集器。我想实现这些功能并添

c++ - 什么可以解释调用 free() 时的堆损坏?

我已经调试了几天的崩溃,它发生在OpenSSL的深处(与维护者讨论here)。我花了一些时间进行调查,所以我会尝试让这个问题变得有趣且内容丰富。首先,给出一些上下文,我重现崩溃的最小样本如下:#include#include#include#include#include#includeintmain(){ERR_load_crypto_strings();OpenSSL_add_all_algorithms();ENGINE_load_builtin_engines();EC_GROUP*group=EC_GROUP_new_by_curve_name(NID_sect571k1);

c++ - 什么可以解释调用 free() 时的堆损坏?

我已经调试了几天的崩溃,它发生在OpenSSL的深处(与维护者讨论here)。我花了一些时间进行调查,所以我会尝试让这个问题变得有趣且内容丰富。首先,给出一些上下文,我重现崩溃的最小样本如下:#include#include#include#include#include#includeintmain(){ERR_load_crypto_strings();OpenSSL_add_all_algorithms();ENGINE_load_builtin_engines();EC_GROUP*group=EC_GROUP_new_by_curve_name(NID_sect571k1);

C++14 类型列表,有什么理由更喜欢 'free functions' 到 'methods',反之亦然?

我看到了在C++11/14中实现类型列表的两种可能的风格,我很好奇是否有任何理由更喜欢其中一种。第一种技术是outlinedhere并在Boost的MPL库上建模。在这种风格中,您定义了接收类型列表并对其进行操作的元“自由函数”(使用声明的顶层)。以下是您将如何实现std::transform的元版本,该版本适用于类型而不是第一种样式中的值:templatestructtype_list;namespaceimpl{templateclassF,classL>structtransform_impl;templateclassF,templateclassL,typename...T>

C++14 类型列表,有什么理由更喜欢 'free functions' 到 'methods',反之亦然?

我看到了在C++11/14中实现类型列表的两种可能的风格,我很好奇是否有任何理由更喜欢其中一种。第一种技术是outlinedhere并在Boost的MPL库上建模。在这种风格中,您定义了接收类型列表并对其进行操作的元“自由函数”(使用声明的顶层)。以下是您将如何实现std::transform的元版本,该版本适用于类型而不是第一种样式中的值:templatestructtype_list;namespaceimpl{templateclassF,classL>structtransform_impl;templateclassF,templateclassL,typename...T>

c++ - result_of<F(Args...> 和 decltype<f(args...)> 有什么区别?

我看到std::async指定如下:template//copiedoutofthestandardfuture::type>async(F&&f,Args&&...args);我原以为它会这样声明:templateautoasync(F&&f,Args&&...args)->future(f)(forward(args)...)>;这是否是等价的,或者是否有某种方式使用result_of比使用decltype更可取?(我知道result_of适用于类型,而decltype适用于表达式。) 最佳答案 您的版本不适用于例如指向成员的指

c++ - result_of<F(Args...> 和 decltype<f(args...)> 有什么区别?

我看到std::async指定如下:template//copiedoutofthestandardfuture::type>async(F&&f,Args&&...args);我原以为它会这样声明:templateautoasync(F&&f,Args&&...args)->future(f)(forward(args)...)>;这是否是等价的,或者是否有某种方式使用result_of比使用decltype更可取?(我知道result_of适用于类型,而decltype适用于表达式。) 最佳答案 您的版本不适用于例如指向成员的指

c++ - 分支预测 : Writing Code to Understand it; Getting Weird Results

我试图通过测量运行带有可预测分支的循环与带有随机分支的循环的时间来更好地理解分支预测。所以我编写了一个程序,它采用以不同顺序排列的0和1的大数组(即全0、重复0-1、全rand),并根据当前索引是0还是1遍历数组分支,做浪费时间的工作。我预计难以猜测的数组会花费更长的时间来运行,因为分支预测器会更频繁地猜错,并且无论数量多少,两组数组上运行之间的时间增量都将保持不变浪费时间的工作。但是,随着浪费时间的工作量增加,阵列之间的运行时间差异也会增加很多。(X轴是浪费时间的工作量,Y轴是运行时间)有人理解这种行为吗?您可以在以下代码中看到我正在运行的代码:#include#include#in

c++ - 分支预测 : Writing Code to Understand it; Getting Weird Results

我试图通过测量运行带有可预测分支的循环与带有随机分支的循环的时间来更好地理解分支预测。所以我编写了一个程序,它采用以不同顺序排列的0和1的大数组(即全0、重复0-1、全rand),并根据当前索引是0还是1遍历数组分支,做浪费时间的工作。我预计难以猜测的数组会花费更长的时间来运行,因为分支预测器会更频繁地猜错,并且无论数量多少,两组数组上运行之间的时间增量都将保持不变浪费时间的工作。但是,随着浪费时间的工作量增加,阵列之间的运行时间差异也会增加很多。(X轴是浪费时间的工作量,Y轴是运行时间)有人理解这种行为吗?您可以在以下代码中看到我正在运行的代码:#include#include#in

c++ - 为什么 std::result_of 将(不相关的)函数类型作为类型参数?

我意识到“为什么会这样”的问题通常不是最好的问题,但是SO上有很多人关注标准委员会的讨论,所以我希望可以如实回答,因为我很好奇至于答案是什么。基本上,当我第一次看到std::result_of的模板签名时,我花了很长时间才弄清楚它发生了什么:我认为这是一个全新的构造我以前从未见过的模板参数。templateclassresult_of;经过一段时间的思考,我意识到这实际上是什么:F(ArgTypes...)是一个函数类型,但它不是的类型正在评估其结果类型的函数(这只是F):它是采用ArgTypes...参数和returning类型的函数的类型F.这不是……奇怪吗?有点骇人听闻?有谁知道