使用reinterpret_cast进行内存泄漏

时间:2014-05-13 06:07:14

标签: c++ memory-leaks casting reinterpret-cast

使用reinterpret_cast我有一个奇怪的问题。以下代码将导致内存泄漏:

template< class T >
static T chunk_cast( unsigned char* p_data ) 
{
    return *( reinterpret_cast< T* >( p_data ) );
}

此功能仅使用POD类型。如果我评论这个功能,内存泄漏将会消失。所以我确信这会导致内存泄漏。我正在使用Visual Studio 2012。 谢谢!

以下是更多背景信息: 该函数从这里调用:

prop = PropertyFactory::NewProperty< unsigned char >( Keys::data, chunk_cast< unsigned char >( p_chunk->data ) );

物业在这里:

template< class T >
static PropertyPtr NewProperty( const Type::Key &p_key, T p_value ) {
    PropertyPtr newProp = NewProperty<T>( p_key );
    newProp->setValue( AnyPtr( new boost::any(p_value) ) );
    return newProp;
}

AnyPtr和PropertyPtr是std :: shared_ptr&lt;&gt;。这将永远不会在其他用途​​中造成任何问题,只有当我使用上面的演员。如果我使用硬编码值而不是强制转换,则不会出现内存问题。

0 个答案:

没有答案