我对C / C ++中的指针世界很陌生,所以对你来说这可能是一个非常简单的问题:
以下C ++ - 代码正常工作
//std::cout << "foo" << "\n";
但在更改时停止工作
std::cout << "foo" << "\n";
到
\b\s+\b
通过“停止工作”我的意思是:“被我的Norton安全阻止作为潜在的威胁”(如果有任何帮助,则返回代码为“0x76F531AF”)。由于诺顿通常不会干扰我的编程,我假设在cout中双重使用int指针会导致段错误...
谢谢你的帮助!
PS:
我在Windows 8.1上使用Code :: Blocks,使用GCC编译器,使用TDM-GCC的GDB调试器(版本4.7.1,32位)。
编辑:删除指针删除 - &gt;问题依然存在。
答案 0 :(得分:0)
您只能在堆上创建delete
个对象(使用new
或C风格malloc
等)。
// allocate on the heap
int *intOnTheHeap = new int;
// do some stuff with it
*intOnTheHeap = 0;
(*intOnTheHeap)++;
std::cout << *intOnTheHeap << std::endl;
// deallocate
delete intOnTheHeap;
如果你指向一个局部变量,它将指向堆栈上的一个条目。你不需要也不应该自己解除记忆。记忆被释放&#34;当变量超出范围时(在函数末尾),通过自动更改stackpointer。
void myFunction() {
int localVariable;
int *pointerToLocalVariable = &localVariable;
// forbidden and unnecessary:
//delete pointerToLocalVariable;
// here (end of the block) the memory on the stack
// will be freed automatically
}
答案 1 :(得分:0)
由于在完全不同的上下文中Norton-Interception之后出现了相同的错误,这似乎是Code :: Blocks Norton不兼容的情况。