|
发表于 2023-11-24 00:11:52
|
显示全部楼层
问题出在ListInsert函数中,你在定义s时使用了sizeof(Node*),这是一个指针的大小,而不是Node结构体的大小。所以,正确的写法应该是sizeof(Node)。
这里是修改后的代码:
- static inline Status ListInsert(CirLinkList& L, int i, ElemType e)
- {
- CirLinkList p = L;
- if (i < 1 || i > L->data + 1)
- {
- return ERROR;
- }
- for (int j = 0; j < i - 1; j++)
- p = p->next;
- CirLinkList s = (CirLinkList)malloc(sizeof(Node));
- if (s)
- {
- s->data = e;
- s->next = p->next;
- p->next = s;
- L->data++;
- return OK;
- }
- return ERROR_1;
- }
复制代码
至于为什么在Debug模式下会报错而Release模式不会,这是因为Debug模式下编译器会对内存进行一些额外的检查和控制,因此更容易发现和报告错误。而Release模式下为了性能考虑,这些额外的检查被省略了,所以不会报错。
希望对你有帮助!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 |
|