【发布时间】:2012-11-24 00:56:14
【问题描述】:
假设我们从以下开始:
int *newArray = new int[1];
然后有类似的东西:
ifstream inputFile("File.txt");
Counter=0;
while (inputFile >> newValue)
{
newArray[Counter] = newValue;
Counter++
}
如果我尝试从文本文件中提取 100 行,程序最终会崩溃。但是,如果我使用过
int *newArray = new int[100];
原来,它不会崩溃。
如果是动态分配内存,为什么需要大于1的初始值?这对我来说毫无意义。必须定义任何超出诸如 1 或 10 之类的小数的初始长度,这违背了动态内存分配的全部目的......
编辑:这是给学校的,我们还不能使用向量。
【问题讨论】:
-
因为当你只为一个'int'分配空间时,这就是你所得到的。当你想要更多时,你必须分配更多。内存分配的动态方面是您总是可以分配更多。并不是说它会自动增长。如果这就是你想要的,你想要一个 std::vector
,或者一个可以根据需要分配更多内存的类。 -
@DavidO 很好地使用了“自动”这个词:)
-
“这是给学校的,我们还不允许使用向量。” -- 仅仅因为你被人为地限制了,就抱怨解决的问题有什么意义使用解决方案?
-
@Benjamin 不抱怨,只是澄清。
-
谢谢大家的回答和cmets,你们很有帮助!
标签: c++ arrays visual-studio-2010 dynamic-memory-allocation