4

この投稿を読んだ後、あなたは私を狂ったと呼ぶかもしれませんが、ここで私が言うことを読んだときに、私を信頼してください. メモリ リークやその他のエラーが発生する可能性のある状況を理解しようとして、次のコードを記述し、自分の PC でコンパイルしてみました。

#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 に次のエラーが表示されます。 51542. ファイルは保護のために駆除されました"

inline.cpp は私のプログラムの名前です。その行「games.read()」を削除すると、正常にコンパイルされます。ポインタがどこかでメモリリークを引き起こしていますか?

4

2 に答える 2

13

ウイルス対策プログラムが解放後使用の脆弱性を発見しました。

stringローカル配列です。
終了後はご利用いただけませんread()

于 2013-01-14T23:22:20.603 に答える
2

あなたのシステムがあなたのコードがウイルスであると主張したとしても、気が狂っているという意味では心配する必要はありません。あなたは違う。

ウイルス スキャナは、ウイルスと一致する動作パターンを探して報告します。それらは完全ではなく、非ウイルスの動作がウイルスのように見える場合があります。

たとえば、古典的なウイルス戦略は、無効なポインタ書き込みを使用して任意のコードを実行することです。最初のウイルスの 1 つがこれを使用し、今でも一般的な戦略です (これを修正するために少し前に IE を更新したことを思い出します)。そのため、(前の投稿者が指摘したように) ポインター エラーがある場合、それはウイルスのように見える可能性があります。

于 2013-01-14T23:24:05.383 に答える