不是免費的char *我目前在C++深化發展的項目,並在一個模塊裏,我有一個問題:我不能釋放我的指針。 問題是用字符串處理char *。 我需要使用的char *爲OpenSSL的lib和strtok的(我知道這是不是這樣做的唯一方式,但我更喜歡使用它,因爲它似乎更難以在「C++的方式」)。可以在C++
我不明白爲什麼我不能釋放評論的char *,(「unvalid免費指針,摒棄」)
你有一個想法,一個解決方案嗎? 感謝的
string* traitement_req1(string& affectation) {
string nom;
char* statut=(char*)malloc(sizeof(char)*30);
char* hash=(char*)malloc(SHA_DIGEST_LENGTH*sizeof(char));
char* token=(char*)malloc(30*sizeof(char));
string readAffectation;
string hashlist;
string hashS;
string * finalList = new string[2];
string listnom;
string fichier = "test.txt";
ifstream file(fichier.c_str(), ios::in);
if(file){
char* line= (char*)malloc(BUF_SIZE * sizeof(char));
string sline=line;
while (getline(file,sline)){
line=(char*)sline.c_str();
nom = string(strtok(line, " "));
statut = strtok(NULL," ");
readAffectation =string(strtok(NULL," "));
if (affectation == readAffectation){
SHA_CTX ctx;
SHA1_Init(&ctx);
SHA1_Update(&ctx, statut, strlen(statut));
SHA1_Final((unsigned char*)hash, &ctx);
hashS=string(hash,strlen(hash));
hashlist += hashS;
hashlist += "\n";
listnom += nom;
listnom += "\n";
}
}
file.close();
//free(hash);
//free(line);
//free(statut);
finalList[0] = hashlist;
finalList[1] = listnom;
return finalList;
}
else {
printf("error : ouverture impossible!\n");
exit(EXIT_FAILURE);
}
}
是存在的,爲什麼你使用'malloc'和'free'任何正當理由嗎?我有我的懷疑。 – user463035818
爲什麼你甚至使用'malloc'?我假設'SHA_DIGEST_LENGTH'和'BUF_SIZE'是常量,所以只需要在棧上使用一個數組。不需要釋放任何東西 – Kevin