我使用了一个包含字符串的指针数组。
int numwords = 0;
int capacity = 0;
string* words = new string[capacity];
char line[10];
...
resize(){
capacity = capacity*2 +1;
string* temp = new string[capacity];
for(int i = 0; i < numwords; i++){
temp[i] = words[i];
}
delete [] words;
words = temp;
}
...
words[numwords] = string(line);
numwords++;
当它到达这个部分时,就会出现段错误。 numwords 始终为0。 Numwords仅在while循环结束时递增。
直到运行时才会出现错误,所以我非常确定我正确地使指针数组。
我确实在其他地方找到了类似问题的答案。
string strVal[3] = {"Good","Better","Best"};
string* strPtr = strVal;
但我仍然不知道我可能会做什么或者做得不对。
答案 0 :(得分:3)
如果我理解的话,执行内容的简化版本如下:
int numwords = 0;
int capacity = 0;
string* words = new string[capacity];
words[numwords] = string(line);
所以在这里,显然,你在做:
string *words = new string[0];
words[0] = string(line);
你试图将1个元素放在大小为0的数组中。这是正常的,它不起作用。大小为n
的数组可以包含从0
到n-1
索引的n个元素。在您的情况下,n
为0,您不能在数组中放置任何元素。