问一个类中static变量的问题

ylongwu 2013-12-04 10:03:37
类的定义是这样的:
头文件:

class A
{
public:
static const int a;
static const int b;
static int c;
A();
~A();
};

CPP文件:

int A::a=10;
const int A::b= 6;
A::A()
{
c = a+b;
}


main函数这样调用:

main()
{
while(1)
{
testfun();
}

}

void testfun()
{
for(int i=0; i<10; i++)
{
A myClass;
}

}



请问这段代码会不会不断地给static变量重复开辟内存而不回收? 也就是说运行期间,内存会不会不停的增加?
...全文
84 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
max_min_ 2013-12-04
  • 打赏
  • 举报
回复
楼主多虑了!不会的吧!放心使用!
sleeplacker 2013-12-04
  • 打赏
  • 举报
回复
不会,静态成员是和对象独立的,也就是新创建一个类对象时,不会创建该对象的静态成员,而你的类只有静态成员,所以不会无休止的分配内存
追_逐 2013-12-04
  • 打赏
  • 举报
回复
你的变量:static int c; 它是一个类中的静态变量,对他进行初始化应该是在类的外部。 你的那个调用:c = a + b; 并不会对c 进行内存空间的申请。它只是每次对c 进行的一个重新赋值操作。 如果有如下操作: A::a = 0; A::b = 0; A objectA_01; A::a = 2; A::b = 2; A objectA_02; 这种情况下不管是对象objectA_01 还是objectA_02 中的静态变量都是4. 因为它都是在同一片内存中。
worldy 2013-12-04
  • 打赏
  • 举报
回复
不会,并且A::a是所有的A类对象公用
图灵狗 2013-12-04
  • 打赏
  • 举报
回复
不会的。
引用 楼主 ylongwu 的回复:
类的定义是这样的: 头文件:

class A
{
public:
	static const int a;
	static const int b;
     static int c;
	A();
	~A();
};
CPP文件:

int A::a=10;
const int A::b= 6;
A::A()
{
    c = a+b;
}
main函数这样调用:

main()
{
   while(1)
   {
      testfun();
   }

}

void testfun()
{
   for(int i=0; i<10; i++)
   {
      A myClass;
   }

}

请问这段代码会不会不断地给static变量重复开辟内存而不回收? 也就是说运行期间,内存会不会不停的增加?

64,661

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧