您的位置:首页 > 编程语言 > C语言/C++

【C/C++】知识回顾2

2016-03-19 15:59 567 查看
栈的空间一般为2 M,分配太多栈控件程序会崩溃。

在函数内部,若程序没有为指针分配空间,则函数退出时,其栈控件也就不存在了,就会产生野指针,输出结果未知。

1) malloc 函数: void *malloc(unsigned int size)

在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。
2)calloc 函数: void *calloc(unsigned int num, unsigned int size)

按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。
calloc申请内存空间后,会自动初始化内存空间为 0,但是malloc不会进行初始化,其内存空间存储的是一些随机数据。

3)realloc 函数: void *realloc(void *ptr, unsigned int size)

动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size。
申请的内存空间不会进行初始化。

4)new是动态分配内存的运算符,自动计算需要分配的空间,在分配类类型的内存空间时,同时调用类的构造函数,对内存空间进行初始化,即完成类的初始化工作。动态分配内置类型是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化。

选快希堆不稳(是不稳定的排序),
堆归选基均不变(运行时间不发生变化,与初始状态无关)

new delete 与malloc free 的联系与区别::都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

基类对象与派生类对象之间存在赋值相容性,包括以下几种情况:

– 把派生类对象赋值给基类对象。

– 把派生类对象的地址赋值给基类指针。

– 用派生类对象初始化基类对象的引用。

• 反之则不行。

内存对齐规定:结构体的总大小为结构体最宽基本类型成员大小的整数倍

原型声明:char
*strcpy(char* dest, const char *src);功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

vector 的erase函数 删除指定位置的元素时, 返回值是一个迭代器,指向删除元素下一个元素

在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是前缀一元运算符。因为++和--有前缀和后缀两种形式,为了区分,要求在后缀形式加一个int参数。
const Fraction operator ++(int) 中 int不过是个哑元(dummy),是永远用不上的,它只是用来判断++是prefix 还是 postfix 。如果有哑元,则是postfix,否则,就是prefix 。

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。

static
变量在编译时初始化一次,存于静态数据区中,后面就不再初始化了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: