C++:memcpy和for循环,在进行拷贝(复制)时的区别?

1.memcpy复制原理

memcpy复制时,是原模原样的进行复制,即就是memcpy复制是浅拷贝,复制的机制就是两个指针指向同一空间,所以在拷贝有些类型时,会崩溃

2.memcpy在进行有些类型的拷贝时,为什么会崩溃?

因为memcpy是浅拷贝,会引起同一块空间被多个对象使用,那就有可能会导致同一块空间被释放多次,所以程序就会崩溃

3.使用memcpy时,那些类型会崩溃?

管理资源的类型会崩溃,例如int没有管理资源,所以int就不会崩溃,而string管理资源了,string在使用memcpy进行拷贝时,会崩溃(string类管理资源了,那管理资源的话,再使用memcpy可能就会出现多个指针管理同一份资源,所以就会崩溃,而int类型没有管理资源,就算使用memcpy也不会出错,因为没有资源,故不会出现,多个指针管理同一份资源)

4.在进行拷贝时,memcpy和for循环的优缺点:

这里写图片描述

5.内置类型和自定义类型应该使用哪种方式进行拷贝?

这里写图片描述

综上

所以,在进行拷贝时,为了避免出错:
如果是内置类型,使用memcpy(因为memcpy的效率高)
如果是自定义类型,使用for循环(for安全,而且自定义类型会涉及到深浅拷贝,故直接使用for)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值