C++中慎用malloc
malloc是C語言中常用的內存申請方式,C++也支持,但是對於STL來說卻不兼容,取而代之的是new。
情景:曾寫過一個C與C++混合的項目,內存申請使用了malloc,同時使用了std::vector,程序中兩種結構之間進行了數據流通。但是程序運行時,部分指針的值被“莫名修改”,導致運行出錯。
使用gdb調試,觀察相關變量的內存地址,發現std::vector竟然可以覆蓋修改malloc此前申請的內存區域。明顯std::vector不識別malloc申請的內存,將這部分內存標記為未使用狀態。
解決方法:將所有malloc改為new,解決問題。