【发布时间】:2012-02-23 14:03:23
【问题描述】:
我在这里遇到了一个小问题。 每次我运行下面的代码时,我的程序都会崩溃。
void Wingcod::push(byte b)
{
stack[stackp] = b;
stackp++;
if(stackp >= stacks)
{
stacks += 16;
try
{
realloc(stack,stacks);
}catch(bad_alloc*)
{
cerr << "STACK OVERFLOW";
exit(1);
}
}
}
而stack、stackp和stacks是这样定义的:
stacks = 8;
stackp = 0;
stack = new byte[stacks];
而字节只是一个unsigned char。
【问题讨论】:
-
你声明的是什么类型的stackp?
-
您是否尝试过使用断点进行调试,看看会发生什么?
-
为什么不改用 C++?您可以使用方便的
std::vector<byte>来满足您的需求。 -
当我进入推送功能时,调试器中的所有变量字段都变为空白。很奇怪。
-
@Kerrek SB 这听起来可能有点奇怪,但我需要比向量更底层的东西。
标签: c++ arrays pointers indexing stack