在多个couts中使用int指针

时间:2015-09-21 09:08:47

标签: c++ pointers segmentation-fault cout norton

我对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;问题依然存在。

2 个答案:

答案 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不兼容的情况。