提问人:scisamir 提问时间:10/24/2023 最后编辑:Marco Bonelliscisamir 更新时间:10/24/2023 访问量:42
C 语言中的 monty pop 操作码
monty pop opcode in C
问:
我尽了我所能,调试了超过 24 小时,但仍然无法修复这个错误。 我正在尝试实现 monty intepreter 的 pop 操作码。
使用 test.m 文件进行测试:
push 1
push 2
push 3
pall
pop
pall
pop
pall
pop
pall
这是我在测试实现时得到的输出:
3
2
1
0
1
free(): double free detected in tcache 2
Aborted (core dumped)
取而代之的是:
3
2
1
2
1
1
pop 操作码实现:
#include "monty.h"
/**
* pop - removes the top element of the stack
* @stack: the stack
* @line_number: current line number of the bytecode file
*
* Return: Nothing
*/
void pop(stack_t **stack, unsigned int line_number)
{
stack_t *temp = NULL;
if (*stack == NULL)
{
dprintf(2, "L%d: can't pop an empty stack\n", line_number);
exit(EXIT_FAILURE);
}
temp = *stack;
*stack = (*stack)->prev;
temp->prev = NULL;
free(temp);
if (*stack)
(*stack)->next = NULL;
}
答: 暂无答案
评论
fail_check = check_opcode(words[0], lineno, top);
top
push
)