C ++导致VIRUS错误?

时间:2013-01-14 23:20:23

标签: c++ pointers memory-leaks

阅读这篇文章后你可能会叫我疯了,但是当你读到我在这里说的话时,我真的会请你相信我。在我试图了解可能导致内存泄漏或其他错误的情况时,我编写了以下代码并尝试在我的电脑上进行编译,

#include <iostream>

using namespace std;

class game
{
   int x;

   public : 
   char *s;
   char read();
   char manipulation();
};

char game :: read()
{
   char string[100];
   cout<<"Enter name ";
   cin>>string;
   s = string;
   cout<<"Name is "<<&s<<endl;
}

int main()
{ 
   game games,games1;
  // games.read();
   cout<<"Name is "<<games.s<<endl;
   return 0;
}

如果我在我的主要执行games.read(),我的防病毒软件BITDEFENDER会向我显示以下错误:“BITDEFENDER在c:/ c ++ / inline.exe中检测到受感染的项目。病毒名称:Gen:Variant .Graftor.51542。文件已经过消毒以保护您的“

inline.cpp是我的程序的名称。 如果我删除该行“games.read()”,它编译好。指针是否会导致内存泄漏?

2 个答案:

答案 0 :(得分:13)

您的防病毒程序刚刚发现了一个免费使用后的漏洞。

string本地数组 在read()退出后,您无法使用它。

答案 1 :(得分:2)

如果您的系统声称您的代码是病毒,那么从您失去理智的意义上来说,没有什么可担心的;你不是。

病毒扫描程序将查找与病毒一致的行为模式并进行报告。它们并不完美,有时非病毒行为看起来像病毒。

例如,传统的病毒策略是使用无效指针写入来运行任意代码。使用此病毒的第一个病毒之一,它仍然是一个常见的策略(我记得不久前的IE更新来解决这个问题)。因此,如果您有指针错误(如上一张海报所述),那么它可能看起来像病毒。