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

栈的空间一般为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 变量在编译时初始化一次,存于静态数据区中,后面就不再初始化了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值