我的程序在以下一段 od 代码上崩溃:
newElement->name = (char*) malloc((strlen(name) + 1) * sizeof(char));
通过使用调试器,我得到 SIGABRT 错误,我不知道为什么,因为它在第二次迭代期间停止(第一次迭代没有任何问题)。
我检查了是否
name
有一个终止的空字符,它有。
这是完整的代码:
element* createElement(const char* name, const char* text) {
if (name == NULL) return NULL;
element* newElement = malloc(sizeof(element));
if (newElement == NULL) return NULL;
newElement->name = (char*) malloc((strlen(name) + 1) * sizeof(char));
if (newElement->name == NULL) return NULL;
strcpy(newElement->name, name);
if (text == NULL) newElement->text = NULL;
else
{
newElement->text = malloc((strlen(text) + 1) * sizeof(char));
if (newElement->text == NULL) return NULL;
strcpy(newElement->text, text);
}
newElement->parentNode = NULL;
newElement->previousSibling = NULL;
newElement->nextSibling = NULL;
newElement->firstChild = NULL;
newElement->lastChild = NULL;
return newElement;
}