今天看到c++实例化对象,有点懵了。Activity_Log the_log (theLogPtr, Tree->GetBranch());这是那一段小代码,开始没看懂。java看习惯了总喜欢new一个对象。c++直接类名 + 对象名(如果有构造函数定义就变为 类名 + 对象名())。c++动态分配...
分类:
编程语言 时间:
2014-10-15 18:40:11
阅读次数:
202
——看到哪里,想到哪里,记到哪里
很多时候,很多人学python的时候,会忽略的东西很多,大多数都盯着能“出货”就行,但是通常在读别人的代码的时候发现,看不懂。。。一方面是自己的代码技巧和经验不足;另一方面就是自己掌握的东西不全面,而这些往往是基础的东西,还不算高大上的东西。。
第一:动态实例属性
Python的类,面向对象的东西和其他语言不太一样,比如实例的属性是可以动态分配的,本来没有的...
分类:
编程语言 时间:
2014-10-15 17:49:21
阅读次数:
235
作用:作为基类使用的类应该具有虚析构函数,以保证在删除基类指针(动态分配的对象)时,根据指针实际指向的对象进行适当的析构。
请看下面这段代码;
#include
class A{
public:
A(){
std::cout << "A constructor execute" << std::endl;
}
~A(){
std::cout << "A destructor...
分类:
其他好文 时间:
2014-10-15 16:11:41
阅读次数:
195
Cocos2d-x中所有内存管理方式的基础是引用计数,动态分配一个Ref对象后其引用计数为1,并通过retain和release来增持和减少其引用计数。引用计数本身并不能帮助我们进行内存管理。
为了正确地释放对象的内存,Cocos2d-x使用Objective-C里面的自动回收池的机制来管理对象内存的释放。Autorelease有点类似于一个共享的”智能指针”,该”智能指针”的作用域为一...
分类:
其他好文 时间:
2014-10-13 18:50:09
阅读次数:
251
算法描述和复杂度分析
发牌程序
c与c++分别是怎样动态分配和释放内存的,有什么区别?
c语言提供内存动态分配的函数有:malloc、calloc、realloc,在使用这些函数时必须包含其头文件,分别为:、、
1) malloc 函数: void *malloc(unsigned int size)
在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功...
分类:
其他好文 时间:
2014-10-13 11:01:14
阅读次数:
214
使用关键字new动态分配内存,在new后面为其分配内存对象的类型,让编译器知道需要多少内存。new的返回值是一个内存地址,内存的地址被存储在指针中,因此将new的返回值赋给一个指针。如 short int* p; p = new short int; 或者声明指针的同时...
分类:
编程语言 时间:
2014-10-12 23:40:08
阅读次数:
198
首先简单说一下标准库中malloc实现原理:
标准库内部通过一个双向链表,管理在堆中动态分配的内存。
malloc函数分配内存时会附加若干(通常是12个)字节,存放控制信息。
该信息一旦被意外损坏,可能在后续操作中引发异常。
mmap/munmap 底层不维护任何东西,只是返回一个首地址,所分配内存位于堆中。
brk/sbrk 底层维护一个...
分类:
其他好文 时间:
2014-10-12 15:23:58
阅读次数:
224
内存可以分为动态内存和静态内存;动态分配是在栈中分配的,静态分配是在堆中分配;“栈”和”堆“的区别在本质上只是操作系统分配内存时,分配的方式不用,从而形成“栈”,”堆“;“堆”是以堆排序的方式分配的内存,“栈”是以压栈、出栈方式分配;定义: 一种可以实现“先进后出”的存储结构;类比于“杯子”;...
分类:
其他好文 时间:
2014-10-09 14:06:33
阅读次数:
199
我们经常会在C程序中调用malloc()函数动态分配一块连续的内存空间并使用它们。那么,这些用户空间发生的事会引发内核空间什么样的反应呢?
malloc()是一个API,这个函数在库中封装了系统调用brk。因此如果调用malloc,那么首先会引发brk系统调用执行的过程。brk()在内核中对应的系统调用服务例程为SYSCALL_DEFINE1(brk, unsigned long, brk),参数brk用来指定heap段新的结束地址,也就是重新指定mm_struct结构中的brk字段。
br...
分类:
其他好文 时间:
2014-10-09 02:09:57
阅读次数:
279
11.为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符。
显然,由于动态内存分配,绝对会有深浅拷贝的问题,要重写拷贝构造函数,使其为深拷贝,才能实现真正意义上的拷贝。这是我理解的关于要声明拷贝构造函数的原因。
而对于赋值操作符,类似的道理。
A b = a;
b = a;对于上述两种形式,上面调用的是复制构造函数,而下面才是 赋值操作符=。赋值与复制很相似,缺省的操作都是将...
分类:
编程语言 时间:
2014-10-07 21:51:04
阅读次数:
197