上海紫灏
1 动态类型转换
C++动态类型转换有四种const_cast、static_cast、dynamic_cast、reinterpreter_cast
2 用map 不用hashmap的场景
3 new 和malloc的区别
new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进行重载
4 线程安全的读写锁
5 判断float是零
abs(a)<=1e-6
1e-6表示1乘以10的负6次方。
Math.abs(x)<1e-6其实相当于x==0
1e-6(也就是0.000001)叫做epslon,用来抵消浮点运算中因为误差造成的相等无法判断的情况。它通常是一个非常小的数字(具体多小要看你的运算误差)
6 resize
7 memcpy memmove
一、memmove()和memcpy()函数和strcpy()函数的区别;
(1)使用的类型不同,strcpy()函数只对字符串进行操作;memmove()和memcpy()函数对所有类型都使用,为内存拷贝(原理:就是利用字节数,交换位置数据的);
(2)strcpy()以‘\0’为拷贝的结束条件;而memmove()和memcpy()函数是以第三个参数num进行控制拷贝;
二、函数说明:
(1)memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝N个字节到目标dst所指的内存地址的起始位置中。
(2)memmove函数的功能同memcpy基本一致,但是当src区域和dst内存区域重叠时,memcpy可能会出现错误,而memmove能正确进行拷贝
void *memcpy(void *dst, const void *src, size_t count);
void *memmove(void *dst, const void *src, size_t count);
memcpy()函数是从前往后拷贝;假如出现内存重叠的现象;拷贝结果可能出错;
memmove()函数在memcpy()函数的基础上加入了对内存重叠拷贝的处理;引入了倒序拷贝的方式处理内存重叠的
8 timewait
网友评论