-1
我正在玩一些代碼,並試圖使其工作,但似乎我失去了一些東西... 所以任何人都可以請告訴我我錯過了什麼或做錯了什麼?在 *(sData->pFileBuffer+i) ^=*(sData->pKey+j);
ConsoleApplication2.exe中的第一次機會異常:0xC0000005:訪問衝突寫入,C++
以下程序中斷是全碼: 我編譯在Visual Studio 2012,如果說有什麼關係呢?
#include <iostream>
using namespace std;
/*
struct StubData{
char * pFileBuffer;
long long FileSize;
char * pKey;
long KeySize;
};*/
class StubData{
public:
char *pFileBuffer;
long long FileSize;
char *pKey;
long KeySize;
StubData(){}
};
void Decrypt(StubData * sData){
int i=0,j=0;
for(i;i<sData->FileSize;i++){
*(sData->pFileBuffer+i) ^=*(sData->pKey+j);
j++;
if (j>=sData->KeySize)j=0;
}
}
void Encrypt(StubData * sData){
int i,j;
sData->pKey="mysecretpassword";
sData->KeySize=strlen(sData->pKey);
j=0;
printf("[*]Encoding\n");
for(i=0;i<sData->FileSize;i++)
{
*(sData->pFileBuffer+i) ^=*(sData->pKey+j);
j++;
if (j>=sData->KeySize)j=0;
}
}
void main(){
//StubData S;
StubData *S = (StubData *)malloc(sizeof(StubData));
new (S) StubData;
S->pFileBuffer="MARKO";
S->FileSize=strlen(S->pFileBuffer);
Encrypt(S);
cout<<"\nenc\n"<<S->pFileBuffer;
Decrypt(S);
cout<<"\ndec\n"<<S->pFileBuffer;
}
謝謝你解釋問題出在哪裏,並建議, ,但它仍然在同一條線... – perunswrath 2014-11-02 00:59:37
@perunswrath無法重現:http://ideone.com/75to16發佈更新後的代碼,因爲你編譯它如果您仍然遇到問題 – PeterT 2014-11-02 01:05:49
非常感謝您......現在可以運行:) – perunswrath 2014-11-02 01:26:10