size_t - 1
vector
- vector的内存空间是只增加不减少的,我们常用的操作clear()和erase(),实际上只是减少了size(),清除了数据,并不会减少capacity,所以内存空间没有减少。
- capacity和size的区别,resize和reserve的区别,[]和at的区别!!
- 内存空间会自增长,每当vector容器不得不分配新的存储空间时,会以加倍当前容量的分配策略实现重新分配。例如,当前capacity为50,当添加第51个元素时,预留空间不够用了,vector容器会重新分配大小为100的内存空间,作为新连续存储的位置。
- vector的内存释放需要使用swap
vector<int> nums;
nums.push_back(1);
nums.push_back(1);
nums.push_back(2);
nums.push_back(2);
vector<int>().swap(nums);
- vector中放指针,vector析构后并不会释放指针指向的地址,需要自己释放
内存泄漏
printf
- 包括很多:syslog vsnprintf等等
- 在使用时,最好指定输出格式,不然输出内容中含有%s的时候会有问题