Will this C++ code cause a memory leak (casting array new)

后端 未结 24 3010
暗喜
暗喜 2021-02-14 12:26

I have been working on some legacy C++ code that uses variable length structures (TAPI), where the structure size will depend on variable length strings. The structures are allo

24条回答
  •  庸人自扰
    2021-02-14 12:45

    I personally think you'd be better off using std::vector to manage your memory, so you don't need the delete.

    std::vector backing(sizeof(STRUCT) + nPaddingSize);
    STRUCT* pStruct = (STRUCT*)(&backing[0]);
    

    Once backing leaves scope, your pStruct is no longer valid.

    Or, you can use:

    boost::scoped_array backing(new BYTE[sizeof(STRUCT) + nPaddingSize]);
    STRUCT* pStruct = (STRUCT*)backing.get();
    

    Or boost::shared_array if you need to move ownership around.

提交回复
热议问题