草庐IT

field_delete_instance

全部标签

c++ - new 和 delete 处理多线程问题

我正在看书EfficientC++:PerformanceProgrammingTechniques作者对全局新的和删除的运营商说了以下内容:Theymanagememoryintheprocesscontext,andsinceaprocessmayspawnmultiplethreads,new()anddelete()mustbeabletooperateinamultithreadedenvironment.Inaddition,thesizeofmemoryrequestsmayvaryfromonerequesttothenext.第6章单线程内存池。这是真的吗?我认为C+

C++ delete 不释放所有内存 (Windows)

我需要帮助了解我在Windows上的内存分配和释放问题。我目前正在使用VS11编译器(VS2012IDE)和最新更新(Update3RC)。问题是:我正在为二维数组动态分配一些内存并立即释放它。尽管如此,在内存分配之前,我的进程内存使用量在分配之前是0,3MB,在分配时是259,6MB(预计因为分配了32768个64位整数(8字节)数组),在分配期间是4106,8MB,但在释放内存后,内存并没有下降到预期的0.3MB,而是停留在12.7MB。由于我正在释放我占用的所有堆内存,因此我预计内存会恢复到0.3MB。这是我正在使用的C++代码:#include#defineSIZE32768i

c++ - delete 如何区分内置数据类型和用户定义的数据类型?

如果我这样做://(1.)int*p=newint;//...dosomethingdeletep;//(2.)classsample{public:sample(){}~sample(){}};sample*pObj=newsample;//...dosomethingdeletepObj;那C++编译器怎么知道delete后面的对象是内置数据类型还是类对象呢?我的另一个问题是,如果我new一个指向int数组的指针,然后我delete[]那么如何编译器知道要取消分配的内存块的大小吗? 最佳答案 编译器知道指向对象的类型,因为它知道

c++ - 在动态分配的对象上调用 delete 是否总是内存泄漏?

从讨论开始here,我想知道下面的代码是否有内存泄漏:intmain(){newint();//orint*x=newint();return0;}我知道内存被操作系统回收了,但它还是泄漏了吗?我相信是的。什么定义了内存泄漏?我只能在标准中找到一份引用资料,而且帮助不大。编辑:我不想开始辩论——“我认为……”不是我要找的那种答案。我最感兴趣的是资源-哪些C++书籍或网站或任何关于它的内容。 最佳答案 这取决于你如何定义“泄漏”。根据最明显的定义,唯一有用的,它不是泄漏,至少在应用层。水桶不漏是因为你有意让有限数量的水逸出。实际上,应

c++ - Protocol Buffer : how nested (custom) optional fields are to be handled in C++?

读入ProtocolBufferBasics:C++,没有找到符合情况的东西:;以下.proto处理--cpp_out,messageA{requiredint32foo=1;}messageB{optionalAdata=1;}没有生成明显的访问器/setter来设置自定义可选字段(包括我懒得放在这里的“嵌套类型”部分)://accessors-------------------------------------------------------//optional.A=1;inlineboolhas_a()const;inlinevoidclear_a();staticcon

c++ - 何时使用 =default 与 =delete

据我了解,这些语义仅用于复制构造函数、移动构造函数、复制赋值、移动赋值和析构函数。使用=delete用于禁止使用其中一项功能,即=default如果您想向编译器明确说明在何处使用这些函数的默认值,则使用它。在制作类(class)时使用这些关键字的最佳做法是什么?或者更确切地说,在开发类(class)时我如何记住这些?例如,如果我不知道我是否会使用这些功能之一,最好用delete禁止它。或允许并使用default? 最佳答案 好问题。同样重要的是:哪里使用=default和=delete.我对此有一些有争议的建议。它与我们所有人(包括

c++ - 错误 : Field has an incomplete type

quaternion.h:15:错误:字段“v”的类型不完整嗨!我陷入了一个我似乎无法解决的错误。下面是我的代码:#ifndefQUATERNION_H#defineQUATERNION_H#include"vec3.h"classVec3;classQuaternion{public:Quaternion(Vec3v);Quaternion(doublew,Vec3v);Vec3v;我的Vec.h看起来像这样:#ifndefVEC3_H#defineVEC3_H#include"point.h"#include"quaternion.h"#includeclassQuaternion

C++初阶:C/C++内存管理、new与delete详解

之前结束了类与对象:今天进行下面部分内容的学习文章目录1.C/C++内存分布2.C语言中动态内存管理方式:malloc/calloc/realloc/free3.C++动态内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型4.operatornew与operatordelete函数5.new和delete的实现原理5.1内置类型5.2自定义类型6.定位new表达式(placement-new)7.知识点梳理malloc/free和new/delete的区别1.C/C++内存分布具体说明:栈又叫堆栈–非静态局部变量/函数参数/返回值等等,栈是向下增长的。栈

c++ - C++中的delete和调用析构函数有什么区别

如标题所述,这是我的代码:classFoo{public:Foo(intcharSize){str=newchar[charSize];}~Foo(){delete[]str;}private:char*str;};对于这门课,两者之间的区别是什么:intmain(){Foo*foo=newFoo(10);deletefoo;return0;}和intmain(){Foo*foo=newFoo(10);foo->~Foo();return0;} 最佳答案 调用析构函数会释放对象拥有的资源,但不会释放分配给对象本身的内存。第二个代码片

c++ - 错误 C2280 : attempting to reference a deleted function (atomic<int>)

我有一个classA带有成员变量_atomicVar类型std::atomic.#includeclassA{public:A();~A();private:std::atomic_atomicVar;};如果我构建项目,我会收到以下错误:errorC2280:'std::atomic::atomic(conststd::atomic&)':attemptingtoreferenceadeletedfunction我主要是一名C#开发人员,所以我还不了解C++的每个细节(还)。我不知道我在哪里使用atomic的复制代码.我还尝试初始化_atomicVar:std::atomic_ato