В моей программе на C ++ есть ошибка:
#include<iostream>
using namespace std;
char* foo()
{
char * mystr = new char[6];
mystr = "Hello";
return mystr ;
}
int main()
{
char* myString =foo();
printf("%s \n", myString);
delete [] myString ;
}
==27472== Invalid free() / delete / delete[]
==27472== at 0x4A07A12: operator delete[](void*) (vg_replace_malloc.c:409)
==27472== by 0x4007EB: main (printHello.cpp:16)
==27472== Address 0x4008f8 is not stack'd, malloc'd or (recently) free'd
Если я удаляю delete [] myString ;
, это работает хорошо.
Я должен освободить память, выделенную в куче, верно?
Но почему я получил ошибку, если удаляю ее?
Спасибо