C++ new的使用場景
发布日期:2021-05-06 19:48:15 浏览次数:16 分类:技术文章

本文共 737 字,大约阅读时间需要 2 分钟。

C++ new的使用場景

C++中我們可以使用如:

Classname myobj;

或:

Classname* myptr = new Classname;

兩種方式來創建物件,它們的差別在哪呢?詳見下表:

不使用new 使用new
memory area stack free store(heap)
是否需要使用delete銷毀
生命週期 一出可視範圍就被銷毀 直到使用delete銷毀

從上面的表格可以知道,如果一個物件不是使用new來創建的,那麼它一出可視範圍就會被銷毀。因此如果我們想要在函數中新建一個物件並回傳,我們就必須使用new來創建它。

TensorRT中的例子

在的CaffeParser::parseBinaryProto函數中:

IBinaryProtoBlob* CaffeParser::parseBinaryProto(const char* fileName){
//... return new BinaryProtoBlob(memory, blobProtoDataType == trtcaffe::FLOAT ? DataType::kFLOAT : DataType::kHALF, dims); std::cout << "CaffeParser::parseBinaryProto: couldn't find any data!!" << std::endl; return nullptr;}

就使用了return new BinaryProtoBlob來在函數中創建並回傳BinaryProtoBlob物件。

參考連結

上一篇:TensorRT/parsers/caffe/caffeParser/caffeParser.cpp入口函數源碼研讀
下一篇:TensorRT/parsers/caffe/binaryProtoBlob.h源碼研讀

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月13日 20时50分58秒