C和C++的点滴积累(1)

                     C和C++的点滴积累(1)

 

1. mfc 编程中存在着如果出现“内存不足”的对话框,一种情况是在申请内存的时候出现问题,也就是例如:char *pChar = new char[num]; 但此时num 为零或者负数的情况。

 

2 .位运算只是用于charint 两种类型,不适用于double,float,long double,void 类型。

 

3.    移位操作,在移位后数值小于256 的范围内,向左移动移位则是乘2 ,向右移动一位则是除2

B = a<<2  a*4 >256 的时候,B = a*4 256; a*4<256 的时候,B = a*4;

 

4.      string 类使用的方法

(1)       首先引用头文件#include <string>

        (2)    在使用string 的时候使用命名空间std ;或者声明using namespace std;

5. VC 当中,如果是某一个工程需要被导出供其它工程使用,需要加导出标准__declspec(dllExport). 如果不添加上述标志符,便不能导出,其他工程便不能使用。如果是本工程需要使用其它工程中的内容,需要加上__declspec(dllImport). 虽然面对一般函数和静态函数不加标志符可以通过,但是面对静态变量的时候便会出现连接错误。

 

6. Struct 内部的成员和全局变量当名字相同的时候,不会产生冲突!

 

7.      VC 下面进行编译的过程中,先要生成中间文件,在中间文件的基础上生成可执行或者是库文件。

 

8.深拷贝和浅拷贝的问题:区别是你传递的是地址还是值,如果传递的是地址的话便是浅拷贝,传递的是值的话便是深拷贝。浅拷贝的时候当变量是NEW 出来在进行删除的时候一定要注意。

 

9. 使用 Malloc/Free New/delete 的不同:

     在生成对象的时候,通过 Malloc 生成的,还必须要调用构造函数才可以进行初始化,删除的时候,先是调用析构函数,再 Free ()掉( free 不能执行析构函数,而可能造成一些问题的存在 )。而 New 后,系统自己调用构造、析构函数,不用在进行调用,只需要 Delete 即可。 在删除数组的时候, delete [] pData; 而不是 Delete pData ;否则删除的仅仅是第一个元素。

 

1)  分配没有成功。却使用它

2)  内存分配成功,但是没有初始化就使用它了

3)  操作越界,往往出现在 For 循环中

4)  内存泄露,忘记释放内存

5)  释放了,却还在使用

 

 

 

 

你可能感兴趣的:(C和C++的点滴积累(1))