C++ 使用reinterpret_cast进行转换时内存泄漏

C++ 使用reinterpret_cast进行转换时内存泄漏,c++,memory-leaks,casting,reinterpret-cast,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 ) ); } 模板 静态T chunk_cast(无符号字符*p_数据) { 返回*(重新解释投影(投影数据)); } 此功能仅使用POD类型。如果我注释掉

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

template< class T >
static T chunk_cast( unsigned char* p_data ) 
{
    return *( reinterpret_cast< T* >( p_data ) );
}
模板
静态T chunk_cast(无符号字符*p_数据)
{
返回*(重新解释投影(投影数据));
}
此功能仅使用POD类型。如果我注释掉这个函数,内存泄漏就会消失。所以我确信这会导致内存泄漏。我正在使用Visual Studio 2012。 谢谢大家!

以下是更多的上下文: 从此处调用该函数:

prop = PropertyFactory::NewProperty< unsigned char >( Keys::data, chunk_cast< unsigned char >( p_chunk->data ) );
prop=PropertyFactory::NewProperty(key::data,chunk\u cast(p\u 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;
}
模板
静态属性yptr NewProperty(常量类型::键和p_键,T p_值){
PropertyPtr newProp=NewProperty(p_键);
newProp->setValue(AnyPtr(newboost::any(p_值));
返回newProp;
}

AnyPtr和PropertyPtr是std::shared_ptr。这将不会导致任何问题,在其他用途,只有当我使用上述铸造。如果使用硬编码值而不是强制转换,则不会出现内存问题。

您如何知道内存泄漏?如果Visual Studio的静态分析器报告泄漏,则为假阳性。奇怪的模板,您不这么认为吗<代码>模板静态T*看起来更好除非
p\u数据
正确对齐
T
,此代码具有未定义的行为。除此之外,我看不出它怎么会泄漏内存。我们需要一些上下文。我们现在能做的就是猜测。。。