个人网站多少钱,网页项目描述怎么写,wordpress注册相关,简单公司网站模版宏定义可以提高效率#xff0c;但是宏不是函数。
预编译通过代码复制的方式代替函数调用#xff0c;省去了诸如函数压栈等系统过程#xff0c;从而提高了效率。但是由于宏定义仅仅是代码替换#xff0c;所以引起很多问题。#define MAX(a#xff0c;b) (a) (b) ? (… 宏定义可以提高效率但是宏不是函数。
预编译通过代码复制的方式代替函数调用省去了诸如函数压栈等系统过程从而提高了效率。但是由于宏定义仅仅是代码替换所以引起很多问题。#define MAX(ab) (a) (b) ? ( a) : (b)resultMAX(A,B) 2 编译器对其解释为 (a) (b) ? (a) : (b)2 .导致该语句执行与预期不符。宏定义的另一个缺点就是无法访问类的私有成员。 而内联函数通过把代码直接复制进调用函数体内避免产生某些系统过程同样提高了效率但是
内联函数可以进行类型检查this指针同样能应用这是宏定义无法比拟的。内联函数必须是函数的声明和定义一体且在函数前面加inline。 内存的三种分配方式静态存储区分配栈上分配堆上分配。 内存使用常见错误 1内存分配不成功却使用它。对策使用前检查内存是否为NULL。 2内存分配成功但没有初始化就使用它。对策内存分配后初始化。 3内存分配成功且已经初始化但是越界。对策做越界检查。 4忘记释放内存造成内存泄漏。对策内存动态分配和释放必须成双配对。 5释放了内存却继续使用它。 a对象关系过于复杂理不清楚究竟释放了没有。 breturn指向栈内存的指针或引用。 cfree或delete内存后没有把指针置为NULL。导致野指针。 指针与数组。数组名对应着而不是指向一块内存在生存期内其地址不可改变只能是数组内容改变。 sizeof sizeof(数组) 数组元素个数*sizeof数组的元素数据类型。 sizeof指针 4 数组作为参数传递时数组名自动退化为指针类型即sizeof数组4 sizeof结构体或者类这个有点麻烦和编译器的设置有关系pragma packn是编译器指定的内存字节对齐方式sizeof结构或者类和pragma packn关系密切默认的n8结构中的成员占用的内存起始地址为成员的数据类型的大小和n相比较的较小值。 指针参数 不要让指针参数在函数体内部申请内存如果非要指针在函数体内部申请内存就要用指针的指针。函数的返回值不能使用栈内分配的变量地址。 野指针用malloc和new 分配了内存就得用free和delete 释放否则造成内存泄漏但是只释放内存还是不够安全的必须在释放内存后让指针指向NULL才不至于造成野指针。我理解的野指针就是没有正确指向的指针。