草庐IT

malloc_ptr_t

全部标签

c++ - 我们应该通过引用还是按值传递 shared_ptr ?

当函数采用shared_ptr(来自boost或C++11STL),你通过了吗:通过const引用:voidfoo(constshared_ptr&p)或按值:voidfoo(shared_ptrp)?我更喜欢第一种方法,因为我怀疑它会更快。但这真的值得吗?还是有其他问题?能否请您说明您选择的原因,或者如果是,您认为这无关紧要的原因。 最佳答案 Scott、Andrei和Herb在AskUsAnything期间讨论并回答了这个问题。sessionC++andBeyond2011.观看从4:34onshared_ptrperforma

c++ - malloc() 和 free() 是如何工作的?

我想知道malloc和free是如何工作的。intmain(){unsignedchar*p=(unsignedchar*)malloc(4*sizeof(unsignedchar));memset(p,0,4);strcpy((char*)p,"abcdabcd");//**deliberatelystoring8bytes**cout如果可能的话,如果答案能深入内存,我将不胜感激。 最佳答案 好的,关于malloc的一些答案已经发布。更有趣的部分是free的工作原理(在这个方向上,malloc也可以更好地理解)。在许多mallo

c++ - malloc() 和 free() 是如何工作的?

我想知道malloc和free是如何工作的。intmain(){unsignedchar*p=(unsignedchar*)malloc(4*sizeof(unsignedchar));memset(p,0,4);strcpy((char*)p,"abcdabcd");//**deliberatelystoring8bytes**cout如果可能的话,如果答案能深入内存,我将不胜感激。 最佳答案 好的,关于malloc的一些答案已经发布。更有趣的部分是free的工作原理(在这个方向上,malloc也可以更好地理解)。在许多mallo

c++ - new/delete 和 malloc/free 有什么区别?

new/delete和malloc/free有什么区别?相关(重复?):InwhatcasesdoIusemallocvsnew? 最佳答案 新建/删除分配/释放内存从“免费存储”分配的内存。返回一个完全类型化的指针。new(标准版本)从不返回NULL(将抛出失败)。使用Type-ID调用(编译器计算大小)。有一个明确处理数组的版本。重新分配(以获取更多空间)没有直观地处理(因为复制构造函数)。他们是否调用malloc/free是实现定义的。可以添加一个新的内存分配器来处理低内存(std::set_new_handler)。oper

c++ - new/delete 和 malloc/free 有什么区别?

new/delete和malloc/free有什么区别?相关(重复?):InwhatcasesdoIusemallocvsnew? 最佳答案 新建/删除分配/释放内存从“免费存储”分配的内存。返回一个完全类型化的指针。new(标准版本)从不返回NULL(将抛出失败)。使用Type-ID调用(编译器计算大小)。有一个明确处理数组的版本。重新分配(以获取更多空间)没有直观地处理(因为复制构造函数)。他们是否调用malloc/free是实现定义的。可以添加一个新的内存分配器来处理低内存(std::set_new_handler)。oper

c++ - 在什么情况下我使用 malloc 和/或 new?

我看到在C++中有多种分配和释放数据的方法,我知道当你调用malloc时你应该调用free并且当你使用new运算符,您应该与delete配对,将两者混合使用是错误的(例如,在使用创建的东西上调用free()new运算符),但我不清楚何时应该使用malloc/free以及何时应该使用new/delete在我的真实世界程序中。如果您是C++专家,请告诉我您在这方面遵循的任何经验法则或约定。 最佳答案 除非你被迫使用C,否则你应该永远不要使用malloc。始终使用new。如果您需要大量数据,只需执行以下操作:char*pBuffer=ne

c++ - 在什么情况下我使用 malloc 和/或 new?

我看到在C++中有多种分配和释放数据的方法,我知道当你调用malloc时你应该调用free并且当你使用new运算符,您应该与delete配对,将两者混合使用是错误的(例如,在使用创建的东西上调用free()new运算符),但我不清楚何时应该使用malloc/free以及何时应该使用new/delete在我的真实世界程序中。如果您是C++专家,请告诉我您在这方面遵循的任何经验法则或约定。 最佳答案 除非你被迫使用C,否则你应该永远不要使用malloc。始终使用new。如果您需要大量数据,只需执行以下操作:char*pBuffer=ne

std::weak_ptr<void>绑定到std::shared_ptr<T>

最近在忙自己的研究生科研工作和尽量在不看源码的情况下写一个玩具版的muduo(我已经看过陈硕的《Linux多线程服务端编程:使用muduoC++网络库》,相当于按自己的理解再写一遍),没太有时间写C++对象模型的后面部分,等组会开完后再继续写。今天就写一下几天前看到的一个小技巧,也即标题:std::weak_ptr绑定到所有类型的std::shared_ptr。std::weak_ptr我们知道weak_ptr目的是为了防止只使用std::shared_ptr导致的循环引用,从而导致内存泄漏。一个经典的例子如下:#include#include#include#includeclassChil

std::weak_ptr<void>绑定到std::shared_ptr<T>

最近在忙自己的研究生科研工作和尽量在不看源码的情况下写一个玩具版的muduo(我已经看过陈硕的《Linux多线程服务端编程:使用muduoC++网络库》,相当于按自己的理解再写一遍),没太有时间写C++对象模型的后面部分,等组会开完后再继续写。今天就写一下几天前看到的一个小技巧,也即标题:std::weak_ptr绑定到所有类型的std::shared_ptr。std::weak_ptr我们知道weak_ptr目的是为了防止只使用std::shared_ptr导致的循环引用,从而导致内存泄漏。一个经典的例子如下:#include#include#include#includeclassChil

malloc如何分配内存

目录一、brk()系统调用1、brk()的申请方式2、brk()系统调用的优缺点3、brk()系统调用的优化二、mmap()系统调用1、mmap基础概念2、mmap内存映射原理3、mmap优点4、适用场景我们知道malloc()并不是系统调用,也不是运算符,而是C库里的函数,用于动态分配内存。malloc申请内存的时候,会有两种方式向操作系统申请堆内存:方式一:通过brk()系统调用从堆分配内存方式二:通过mmap()系统调用在文件映射区域分配内存;一、brk()系统调用1、brk()的申请方式一般如果用户分配的内存小于128KB,则通过brk()申请内存。而brk()的实现的方式很简单,就是