作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
template < typename ArrayType >
ArrayType *VectorToArray( ArrayType **p_ppThisBlock = NULL, vector< ArrayType > *p_vThisVector = NULL )
{
// Check to see if both parameters are valid.
if( p_ppThisBlock == NULL || p_vThisVector == NULL )
{
return NULL;
}
else if( p_ppThisBlock != NULL && p_vThisVector != NULL )
{
// Create the array that will store the vector's elements dynamically.
p_ppThisBlock = new ArrayType[ p_vThisVector -> size( ) ];
// Initialize the array.
for( unsigned uIndex( 0 ); uIndex < p_vThisVector -> size( ); uIndex++ )
{
p_ppThisBlock[ uIndex ] = p_vThisVector[ uIndex ];
}
// Return the pointer that pointing to the new block of memory. Is this relevant?
return p_ppThisBlock;
}
}
我的问题是:返回我在这个函数中创建的内存块是否相关?(第 12 行)。
最佳答案
最终;否则会导致内存泄漏。
如果函数正在分配数组并将其留给调用者释放内存,这很好。如果调用者假设内存稍后被释放(并且不是我们在这里看到的),内存泄漏。
为什么不返回 vector< vector< ArrayType > >
?
编辑:
尝试为该方法提供以下签名。
template <typename ArrayType>
vector<vector< ArrayType> >& VectorToArray(
vector< vector< ArrayType > >& _block,
vector< ArrayType >& _vec )
{
//No need to check parameters
//Initialize the array
for (unsigned uIndex( 0 ); uIndex < _vec.Size(); uIndex++)
{
_block.push_back(_vec);
}
return _block;
}
相同的结果,更少的错误检查,没有泄漏。当然,这需要引用而不是原始指针。
关于c++ - 我应该归还这个内存块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788375/
我想弄清楚为什么这不起作用。 我在 Typescript 上使用 React 和 Redux。 我有以下代码: import * as React from 'react'; import * as
我想申请重新投递并使用死信 channel 。所以发现这个非常有用的apache-camel FAQ link 。我按照本网站中提到的步骤进行操作。 我添加了更多逻辑,代码可以在 github 中找到
我是一名优秀的程序员,十分优秀!