
值传递
Go数组传参会完整复制底层数组,因数组是值类型;应优先用*[N]T或[]T替代[N]T以避免拷贝,但需注意指针解引用和slice共享风险。
虚析构函数能防止多态内存泄漏,因为通过基类指针delete派生类对象时,它确保先调用派生类析构函数再调用基类析构函数,从而正确释放派生类中申请的资源。
值类型赋值时发生完整内存拷贝,非引用传递;结构体越大、调用越频繁,CPU和内存带宽压力越显著;超32字节、需修改字段、高频读写等场景应改用指针。
Go接口值在底层由两部分组成(类型描述符和数据指针),其行为天然具有“隐式间接访问”特性:即使接口变量本身按值传递,它所承载的具体值仍可能被多个接口实例共享引用,从而导致意外的修改——这正是其被称为“...
C++中可通过线程、队列、智能指针和std::variant实现Actor模型:Actor基类封装邮箱与消息循环,ActorRef提供安全引用,协程与线程池提升调度效率,强调类型安全、零拷贝与生命周期...
结论:通过&slice[i]修改切片元素确实会改变原切片对应位置的值,并影响所有共享同一底层数组的切片;因为&slice[i]获取的是底层数组元素地址,而&slice获取的是s...
Go中只有值传递,&x取地址得T类型值,p解引用读取指向的值;传指针本质是传地址值副本,修改指针本身不影响原变量。
Go中channel性能瓶颈主因是误用:Goroutine泄漏、锁竞争、内存分配;无缓冲channel在hotpath频繁创建会引发调度开销,应复用而非循环新建。
std::thread构造后必须detach或join,否则析构时调用std::terminate导致崩溃;传参需注意std::ref和std::move;避免隐式捕获this引发悬空指针;共享数据须...
std::future和std::promise是C++11提供的单次异步值传递机制:promise设值/异常,future阻塞获取;需配对使用,仅能调用一次get()和set_*,支持超时等待与异常...