类中的静态函数,如何处理内存
Static function within class, how will memory be handled?
我想使用以下静态函数。这个函数将依次计算输入,然后std::cout输出结果。在调用静态函数并从堆栈中取出之后,与该类关联的所有内存都会被释放吗?这是否等同于在main范围内创建该类的实例,或者它只存在于此函数调用期间?假设该函数在下面的主函数中被调用。此外,进一步的阅读链接将是伟大的。
typedef std::vector< std::vector<int> > matrix;
class LCS
{
public:
static void getLCS(std::string,std::string);
private:
void compute_alignment();
std::vector<std::string> f1,f2;
matrix cost,link;
};
int main(int argc, char* argv[])
{
//check command line args
if(argc != 3){std::cout<<"usage: ./exe file1.txt file2.txt";exit(1);}
//compute
LCS::getLCS(argv[1],argv[2]);
}
严格从你的问题判断,所有在getLCS内部声明的变量将在函数完成后死亡,如果它们是在堆栈上声明的(没有任何类型的裸new
)。除此之外,任何东西都不应该存在。调用静态函数也不会创建一个新的LCS
类:类上的静态函数的行为几乎与自由函数完全相同,除了它们可以在类中放置访问修饰符以限定作用域。静态数据和方法的操作独立于它们的类,除非在成员函数中显式地使用它们并将它们混合在一起。
注意所有c++函数都是如此。当函数/作用域结束时,在堆栈上生成的对象和原语也将退出作用域。作为额外的乐趣,您甚至可以创建scope
通过拍打一些括号{ /* ... */ }
周围的一些代码任意!但是通常没有必要这样做。
祝你好运!
相关文章:
- 开放 CV 中的动态内存分配,用于视频处理
- 是否可以通过每次在内存中仅保存一个平铺来处理完整的平铺 tiff 图像?
- 如何处理堆内存垃圾?
- 如何处理以下代码中的内存分配错误
- 通过函数来处理内存 - 这是正确的
- 如何在将指针传递给库函数时处理内存管理
- 在本机 Android 应用中处理内存不足
- 处理内存分配时的保护标志
- 将向量转换为数组.如何处理内存
- 在处理内存中的一些长向量时如何不弄乱缓存?
- 字符数组 - 处理内存
- 在xcode(c ++)中由我自己处理内存分配
- 处理内存泄漏和更改阵列大小
- 使用新位置处理内存
- 在类中反复处理内存会导致损坏的内存地址
- 类中的静态函数,如何处理内存
- 你如何处理内存管理和信号/插槽
- Fortran 77处理c++内存分配
- 处理内存分配失败
- 在C++中处理内存大小不好