realloc的过程是先尝试能否原地扩容,能就扩容,不能就找一块更大的内存,然后把原来的内容拷贝过去。注意这里使用了memcpy。问题就出现在这里,memcpy只适用于POD数据类型,即bitwise型的拷贝。对于一般类型的类,需要为每个元素都调用构造函数,而memcpy并没有调用构造函数,从而导致一些问题的出现。
vector扩容为什么不使用realloc
最新推荐文章于 2023-05-23 17:35:54 发布
realloc的过程是先尝试能否原地扩容,能就扩容,不能就找一块更大的内存,然后把原来的内容拷贝过去。注意这里使用了memcpy。问题就出现在这里,memcpy只适用于POD数据类型,即bitwise型的拷贝。对于一般类型的类,需要为每个元素都调用构造函数,而memcpy并没有调用构造函数,从而导致一些问题的出现。