在C中释放2D动态数组时,我遇到了运行时错误。 **
Windows触发了断点
**
这是我的代码:
currentNode.setNext(Node newNode);
//iterate the currenNode with newNode
currentNode = newNode;
...
// implement the setNext and mark current as previous for newNode
void setNextNode(Node newNode) {
this.next = newNode;
newNode.setPrevious(this);
}
请你帮我弄清楚错误。
答案 0 :(得分:0)
strtok
不分配内存。它只返回指向原始字符串的指针,并操纵原始字符串。
您不应将const char*
传递给strtok
。
您的程序没有为rowIndexes[index]
分配内存,因此尝试在不分配内存的情况下免费调用将导致分段错误。
这导致了休息。
你的程序试图释放静态内存。对动态内存分配函数未返回的指针进行自由调用将导致未定义的行为。
答案 1 :(得分:0)
strtok
不返回动态分配的字符串,它只返回指向它解析的字符串的指针(它修改了它)。
您应该手动复制令牌,
rowIndexes[size - 1] = strdup(token);