Hej jag har denna funktion i en fil som heter func2.cpp <b>>Jag har ju skapat min vektorpekare med new i en annan fil än den jag använder delete på, hur påverkar det? </b>Problem med delete();
<code>
char *MainComandProcessor(const char *comandLine, int lenght){
char *returnValue = "DENNA SKALL MATAS UT";
return returnValue;
}
</code>
Sedan anropas den från main.cpp
<code>
char *inputLineBuffert, *outputLineBuffert;
outputLineBuffert = MainComandProcessor(inputLineBuffert, numberOfCharOnLine);
delete [] outputLineBuffert; //DETTA BLIR FEL
</code>
Jag kan köra mitt program fram tills jag försöker använda delete då får jag massor av fel som jag visar nedan.
Jag har ju skapat min vektorpekare med new i en annan fil än den jag använder delete på, hur påverkar det?
Fel som uppkommer Debug Libirary
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
Expression: _CrtIsValidHeapPointer(pUserData)
DAMAGE: before Free block (#0) at 0x00420090.
Vad ska jag göra? Har ju sett i andra exempel att detta skall fungera. Har en korrekt header fil och namespace osv.
//HenrikSv: Problem med delete();
Att det ligger i en annan fil påverkar ingenting. Frågan är däremot om du har det eller om du har skrivit funktion som det står.
För det här: char *returnValue = "DENNA SKALL MATAS UT";
Använder inget "new", utan "returnValue" är förstörd efter funktionen.
Sen skulle jag rekommendera dig att använda std::string istället. Finns inga skäl att använda char *. (Observera: INGA skäl). Behöver du skicka en char * till en funktion så använder du sträng.c_str(). std::string är oftast snabbare, oftast mindre minneskrävande, och betydligt mer säker och enkel att använda.
Och det tror jag att du just såg ett exempel på något som inte är.