一、C/C++类型大小问题
类型 | 32位环境下所占字节数 | 64位环境下所占字节数 |
---|---|---|
char | 1 | 1 |
short int | 2 | 2 |
int | 4 | 4 |
long int | 4 | 8 |
long long int | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
char* | 4 | 4 |
int * | 4 | 4 |
特别地,NULL占用4字节。
二、数据存储问题
(一)、C/C++内存中五大区域
其在内存中分配的位置图如下。
1、堆(Heap)
存放着由操作malloc/free,new/delete分配/释放的内存(不太安全的内存管理方式)。堆可以动态地扩展和收缩,这个区域通常较大,并向高地址扩展。动态内存的生存期人为决定,使用灵活。缺点是容易造成内存泄漏(Memory Leakage),频繁操作会产生大量内存碎片。
(1)、内存碎片(Memory Fragment)
内存碎片分为两种:外部碎片和内部碎片。
①、外部碎片(External Memory Fragment)
外部碎片指的是还没有被分配出去(