为什么我不能再为数组分配任何东西了

时间:2013-03-20 18:39:35

标签: c++ arrays char iostream

我有一个链表类的实现(出于奇怪的原因使用char数组)

list_node::list_node(const std::string & input, int start, int end) {
std::cout << "1 arg constructor called" << std::endl;

letters = new char[end - start + 1];
int i = start;

for (i = start; i < end; i++) {
    letters[i] = input[i];
}

letters[i] = '\0';

std::cout << letters << std::endl;
previous = NULL;
next = NULL;
}

我无法理解的是,第一次调用此方法,它的工作原理。此后,它没有。单步执行Eclipse中的调试器,for循环的主体根本不执行!我添加了

letters[i] = '\0'

确保我的数组以空值终止,没有任何区别。

我有另一个方法,它接受指向链表中前一个节点的指针。我只是省略了它

1 个答案:

答案 0 :(得分:3)

您似乎并不想将lettersi编入索引,因为它始于start。如果start大于0,那么您将最终在动态分配的数组的末尾运行。相反,你想要:

letters[i - start] = input[i];

然后:

letters[i - start] = '\0'; // or end - start