如何在多个函数的结构中全局存储数据

时间:2011-04-14 20:53:19

标签: c++ struct

我在cpp文件的顶部定义了这个简单的结构:

struct sServersArray
{
TCHAR sName[128];
};
struct sServersArray sServers[1024] = {0};

我所做的是将数据存储到一个函数的.Name字段中,并读取其他函数中的数据。

我知道这占用了宝贵的内存(离开堆栈/堆,我不知道是哪个或为什么),而且我知道它应该以某种方式移动 - 也许是一个类?

有人可以告诉我如何将这个结构移动到一个类,并能让我的其他函数访问它吗?我担心使用太多的堆栈/堆空间,并且知道这是做错的方法。谢谢!

2 个答案:

答案 0 :(得分:2)

struct sServersArray
{
  std::string sName;
};

std::vector<sServersArray> sServers;

答案 1 :(得分:2)

全局数据分配在内存的单独部分,而不是堆栈,而不是“堆”(免费存储)。

简单解决方案:将服务器名称读取到std::vector<std::string>并通过引用传递它。这样,您的数据就在堆上分配,没有更多的全局需要担心,并且您摆脱了任意长度限制。

(您也可以创建全局vector,但请不要这样做。全局数据是代码味道。)