【发布时间】:2013-01-16 01:08:58
【问题描述】:
我想通过 malloc 方法创建一个整数数组。我希望这个数组是全局的,可以在我的程序中的任何地方使用。我将代码放在如下所示的头文件中:
static int *pieces;
然后我有一个函数,用我想要的数字填充它。该函数位于命名空间中,并且命名空间在其自己的 .cpp 文件中实现。但是,我将头文件导入 main.c 并从创建数组的命名空间调用函数,如:
pieces = malloc(sizeof(int) * 128);
但是当我尝试在 main 中访问数组中的数字时(在调用创建我的数组的函数之后),它崩溃并说片段未初始化。但是在我拥有的函数中,我可以创建它并很好地操纵其中的数字。我的印象是,通过使片段成为静态变量,只要任何地方的某个函数发生更改(或设置它),就会影响任何地方的变量的使用。基本上我想说的是,为什么片段在 main 中出现未设置,即使我将它设置在我调用的函数中?
【问题讨论】:
-
为什么要在 C++ 中使用
malloc? -
删除
static这个词,因为这会在每个文件中创建一个本地副本。 -
@ChristianDaley:
new。或者更好的是,std::vector。 -
@Oli,因为他也想要。他的所作所为并没有错。请回答问题。
-
@owl - 明确意图正是 cmets 的目的。正如我四年前指出的那样,C++ 中有很多更好的选择。
标签: c++ variables pointers static global