- 浏览: 398992 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (309)
- xaml C# wpf (0)
- scala java inner clas (1)
- Tools UML Eclipse UML2 (1)
- Timer .NET Framework (1)
- perl (6)
- python function paramter (1)
- Python Docstring (1)
- Python how to compare types (1)
- Python (8)
- java (5)
- C# (76)
- C# WPF (0)
- p4 (0)
- WPF (46)
- .net (6)
- xaml (1)
- javascript (40)
- windows (10)
- scala (4)
- winform (1)
- c++ (48)
- tools (12)
- cmd (1)
- os (0)
- CI (0)
- shell (0)
- C (2)
- haskell (49)
- functional (1)
- tool (1)
- gnu (1)
- linux (1)
- kaskell (0)
- svn (0)
- wcf (3)
- android (1)
最新评论
In my previous dicuss, we have seen the example of overloaded delete and new operator. and as a matter of fact, we have seen the following signature of the delete operator.
void operator delete(void *); void operator delete(void *, size_t size);
As you will soon find out that they both match the same new operator
void operator new (size_t);
but which one should we choose to use?
and even, you can define both the operator delete(void *) and the operator delete (void *, size_t) in the same class, and according to my test , in the placement operator overloading example, the "operator delete(void *)" has precedance over the "operator delete (void *, size_t)"....
so here is my rule of thme, we uses operator delete (void *, size_t size) when
- the size_t is not barely the size of the object (this could happen if the new operator has say, preallocate some space which is larger than what is required by the object itself.)
- the size_t is necessary to determine flows or it is necessary in the clean up that the delete operator is supposed to do.
- Booking and logging requirement.
- This can be thought as an extension to the point 2, where you can normally see allocated memory is larger than the object itself, is when you allocate a array (new [] operator actually does this)....
And when to use the operator delete (void *)?
- when the size of the pointer in the first parameter is exact the size of the object
- The size_t size is irrelevant in the deallocation flow.
发表评论
-
不安装Visual Studio,只用Windows SDK搭建VC环境
2013-12-31 21:52 15338首先你需要下载的是 Microsoft Windows S ... -
rpath - runtime search path
2013-04-03 11:36 1008RPath is a very interesting to ... -
C++ - autogenerated copy constructor and assignment operator gotchas
2013-01-24 13:32 769It has been changed that the s ... -
c++ - rethrow a exception gotchas
2012-12-23 10:57 955As in my prevoius example in j ... -
c++ -typeid operator
2012-10-15 22:30 1057typeid is the one of the meager ... -
c++ - dynamic_cast revisit
2012-10-14 21:21 768There are several built-in type ... -
c++ - virtual inheritance example 1
2012-10-14 15:25 818we have discussed the virtual i ... -
c++ - virtual inheritance
2012-10-12 08:58 975As we have discussed in the pos ... -
c++ type of inheritance
2012-09-28 08:58 751There are 3 types of inheritanc ... -
c++ - vritually virtual new
2012-09-27 23:59 959Let's see what if we want to cl ... -
c++ - virtual destructor
2012-09-27 22:01 974As we all know that virtual des ... -
c++ - vritual function and default arguments
2012-09-27 08:56 993As we all know that we virtual ... -
c++ - template specialization and partial specialization
2012-09-26 22:38 1327in this post, we are going to e ... -
c++ - member template in class template
2012-09-26 08:19 936class member template can be us ... -
c++ template class and the pattern to use its friends
2012-09-25 23:47 985template class may defined thei ... -
c++ - Friend declaration in class Template
2012-09-25 08:47 1209There are three kinds of friend ... -
c++ - class template default parameters
2012-09-25 08:18 849the template has parameter, it ... -
c++ - operator new and delete and an example of linked list stores by new/delete
2012-09-24 07:53 586The operator new and delete ope ... -
c++ - placement operator new() and the operator delete()
2012-09-23 15:22 868A class member operator new() c ... -
c++ - overloaded subscript operator - []
2012-09-23 08:50 1184You can overload the subscript ...
相关推荐
- `void cJSON_Delete(cJSON *item)`:销毁一个JSON对象及其所有子项。 2. **JSON数据的生成** - `cJSON *cJSON_CreateObject(void)`:创建一个新的空对象。 - `cJSON *cJSON_CreateString(const char *string)`...
标题中的“error LNK2005 void __cdecl operator delete(void)”是一个常见的链接错误,它在C++编程中出现,通常涉及到多库编译时的符号重定义问题。这个错误表明在链接阶段发现了一个重复定义的`operator delete`...
void* malloc(size_t size); void free(void* memblock); ``` - **申请内存**:`malloc` 函数接收一个参数 `size`,表示需要分配的内存大小(以字节为单位)。返回值是一个指向所分配内存起始地址的指针,其...
- C++支持多种转义序列,用于在字符串中插入特殊字符,如`\n`(换行)、`\t`(水平制表符)等。 #### 八、变量与文字常量的存储区 - **变量**:既可作为右值(读取),也可作为左值(赋值)。 - **文字常量**:仅可...
- **void**:表示函数不返回任何值或表示指针为通用指针类型。 - **class**, **struct**:用于定义类或结构体。在 C++中,`class` 和 `struct` 几乎相同,但默认的成员访问权限不同(`class` 默认为私有,`struct` ...
### SQLite的C++接口 #### 一、准备工作 在开始使用SQLite之前,我们需要做一些准备工作确保环境正确设置: 1. **支持C++编译**: 确保开发环境支持C++编译器,以便能够顺利地编译和运行C++代码。 2. **支持...
- **线程函数原型**:通常采用`void* thread_func(void *arg)`的形式。 - **创建缺省线程:** - 使用`pthread_create()`函数创建新线程,可以指定线程属性或者使用默认属性。 - 示例代码: ```c pthread_t ...
在Visual C++(VC++)编程环境中,关键字是语言的核心组成部分,它们具有特殊的含义并指导编译器如何处理代码。以下是一些重要的VC++关键字及其详细解释: 1. **abstract**:关键字`abstract`用于定义接口类或者...
如`template<typename T> void swap(T& a, T& b) {...}`,这个函数可以交换任意类型的变量。 10. **异常处理**:C++通过try、catch和throw关键字进行异常处理,允许程序在遇到错误时优雅地恢复执行。 11. **STL...
- **示例**:`const int MAX_SIZE = 100;` **5.4 类中的常量** - **作用域**:类中的静态常量具有全局可见性。 - **示例**: - `class MyClass {` - `public:` - `static const int MAX_COUNT = 100;` - `};` ...
在C++编程中,动态读取数组是一种常见的内存管理技术,尤其在处理不确定大小的数据集时非常有用。本文将深入探讨动态读取数组的概念、实现方法,并以C++为例,介绍如何实现数组大小的自动增长。 动态数组不同于静态...
void* pVoid = reinterpret_cast<void*>(0x1234); ``` - **是否可重载**: 不可重载。 - **结合性**: 无。 ##### 12. **常量类型转换操作符** `const_cast` - **描述**: 去除或添加变量的`const`或`volatile`属性...
- **void**(空类型):表示没有任何类型。 - **volatile**(易变):用于标记那些可能被意外修改的变量。 - **wchar_t**(宽字符型):用于存储宽字符。 ### 2. Windows 错误代码 文件中还包含了一系列Windows...
void *my_memmove(void *dest, const void *src, size_t n) { if (dest >= src) { // Copy in reverse direction to avoid overwriting data. char *d = (char*)dest + n - 1; const char *s = (const char*)...
实验一 C++简单程序设计基础实验 本实验旨在让学生学会编写简单的 C++ 程序,复习基本数据类型变量和常量的应用,运算符与表达式的应用,结构化程序设计基本控制结构的运用,自定义数据类型的应用,简单的输入输出...
### C++中一些容易混淆的知识 #### Q1. 在函数中,函数为void,此时加return有什么作用?Exit(0)和Exit(1)是什么作用? - **Return**:在`void`类型的函数中添加`return`语句实际上并不会返回任何值。然而,它的...