Windows在空闲内存时触发了断点

时间:2015-10-03 09:53:24

标签: c memory

在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); 
 }

请你帮我弄清楚错误。

2 个答案:

答案 0 :(得分:0)

strtok不分配内存。它只返回指向原始字符串的指针,并操纵原始字符串。 您不应将const char*传递给strtok

您的程序没有为rowIndexes[index]分配内存,因此尝试在不分配内存的情况下免费调用将导致分段错误。 这导致了休息。

你的程序试图释放静态内存。对动态内存分配函数未返回的指针进行自由调用将导致未定义的行为。

答案 1 :(得分:0)

strtok不返回动态分配的字符串,它只返回指向它解析的字符串的指针(它修改了它)。

您应该手动复制令牌,

rowIndexes[size - 1] = strdup(token);