草庐IT

malloc_ptr_t

全部标签

c++ - 为什么 std::unique_ptr 重置与赋值不同?

我想知道为什么std::unique_ptrp=newMyClass;没有效果,但是std::unique_ptrp;p.reset(newMyClass);很好。我有点理解它们的不同之处,但我想知道为什么选择让它们不同。assignment和reset不一样有什么危险? 最佳答案 首先,std::unique_ptrp=newMyClass;不是赋值,是copyinitialization.它不起作用,因为constructorofstd::unique采用原始指针标记为explicit:explicitunique_ptr(po

动态内存分配:malloc、calloc、realloc(超详解析,多维度分析,小白一看就懂!!!!)

目录一、前言二、动态内存的简单介绍🍉什么是动态内存分配🍎为什么要使用动态内存分配 三、动态内存函数的介绍和拓展 🍋malloc()函数 🍊free()函数 🍌calloc()函数🍇realloc()函数四、常见动态内存分配的错误五、共勉一、前言在学习动态内存分配时,感觉这些动态分配没什么用,也就没在意跳过去了,直到碰到数据结构和一些需要动态数组的题目时才知道,动态内存分配的重要性。这次专门花了一早上的时间来学习了动态内存分配,并将它分享出来,希望对大家有帮助哦!!!!二、动态内存的简单介绍🍉什么是动态内存分配知识点1:🔑目前在我们平时写代码的过程中接触最多的就是在栈空间上开辟连续的空间://在

c++ - 为什么 malloc/new 捕获调用堆栈?

我有一个在Server2003下作为服务运行的64位应用程序。当我附加VSProfiler或windbg时,我看到很多调用堆栈,如下所示。我知道调试器(或探查器)中产生的进程使用调试堆等...但情况并非如此,因为该服务是由操作系统启动的,而我只是附加到它。我不明白为什么要展开堆栈。探查器显示这样做花费了可测量的时间。更多信息:•这些是使用vc9构建的版本位,在Server2003上运行。•系统环境变量_NO_DEBUG_HEAP设置为1。•我正在使用Microsoft符号服务器。为什么要捕获堆栈跟踪?它似乎正在记录它..但我找不到位置。我的目标是验证应用程序是否真的展开堆栈,如果是这样

c++ - 使用(和导出)boost::shared_ptr<T> 时出现错误 C2562

各位程序员好,我正在创建一个C++DLL库,我在其中使用了boost(1.55)的shared_ptr。然而,当我使用VisualStudio2013编译项目时,出现了一堆错误C2562:Error1errorC2562:'boost::shared_ptr::operator[]':'void'functionreturningavaluef:\developer\cplus\lib\boost_1_55_0\boost\smart_ptr\shared_ptr.hpp6631MEngineError2errorC2562:'boost::shared_ptr::operator[]

c++ - 如何将 boost::shared_ptr 作为指向 Windows 线程函数的指针传递?

如何将boost::shared_ptr作为指向Windows线程函数的指针传递?假设以下代码:test::start(){...._beginthreadex(NULL,0,&test::threadRun,&shared_from_this(),0,&threadID);......}/*thisisastaticfunction*/UINT__stdcalltest::threadRun(LPVOIDlpParam){shared_ptrk=*static_cast*>(lpParam);...}我认为这段代码不正确,你的想法是什么?我该怎么做?编辑:我通过boost::weak

【C++】C++11——智能指针、内存泄漏、智能指针的使用和原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr

文章目录C++117.智能指针7.1内存泄漏7.2智能指针的概念7.3智能指针的使用7.3.1auto_ptr7.3.2unique_ptr7.3.3shared_ptr7.3.4weak_ptrC++117.智能指针7.1内存泄漏  什么是内存泄漏:  内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。  内存泄漏通常由于程序在设计上的缺陷或错误,例如动态分配内存后,未在合适的时间或无法正确释放该段内存,而导致的。内存泄漏通常需要程序员通过分析程序源代码

c++ - 为什么 malloc 总是返回 NULL

我的开发环境是VS2008、DX9、WindowsXP。我尝试为内存不足的情况添加保护处理。当malloc返回NULL时,我会将一些资源分页到磁盘,然后释放内存中的资源。但有时,malloc总是返回NULL,即使我释放了大部分资源和进程内存使用并且VM大小在任务管理器中只有800MB。我认为使用malloc分配88字节应该没问题,其中进程内存使用量仅为800MB。但是malloc总是返回NULL。这会不会是内存碎片?它看起来不像那样,因为进程内存使用量不是太多。alttexthttp://i.imagehost.org/0267/Snap2.jpg 最佳答案

c++ - ConnectNamedPipe 和 asio overlapped ptr

我命名了使用boostasio编写的管道服务器。服务器创建命名管道并调用ConnectNamedPipe将asiooverlappedptr传递给它。问题是传递给重叠的asio的完成处理程序从未被调用,即在客户端调用CreateFile不会触发传递给ConnectNamedPipe的完成处理程序。我做错了什么?这里是客户端和服务器的完整列表:#define_WIN32_WINNT0x0501#include#include#include#include#include#include#include#include#includestaticconstuint32_tPIPE_OUT

windows - free 和 malloc 的 Visual C++ 线程安全?

有谁知道free和malloc在vi​​sualC++2010上是否是线程安全的?我遇到了内存损坏的奇怪问题,我几乎认为这是唯一的可能性。有谁知道安全是否可以打开和关闭以及如何打开和关闭? 最佳答案 前提是您要链接thread-safelibraries并使用正确的标志,是的,malloc应该是线程安全的。如果您不这么认为,您应该发布一些代码供我们检查。我应该提一下,在绝大多数情况下,它从来都不是库(已经被无数人测试过)。它几乎总是你自己的代码,如果你很彻底,最多已经测试了几十个:-)并不是说微软(或任何其他大型软件公司)不发布错误

c++ - 编写新的 "malloc"和 "free"函数

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。面试问题:我将如何编写新的“malloc”和“free”函数?我不认为“使用新的和删除”是一个可以接受的答案或使用类似LocalAlloc/HeapAlloc的东西