使用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;。这将永远不会在其他用途中造成任何问题,只有当我使用上面的演员。如果我使用硬编码值而不是强制转换,则不会出现内存问题。