Кажется я докумекал.
У меня возникали траблы когда я передавал в f(char* str),
переменную char text[] = "string" - f(text)
и там пытался освободить память. И возникает ситуация когда я освобождаю память передавая не указатель, а переменную - char[].
Извините что продолжил ветку - возник вопрос.
free() - для тех областей что были выделены через malloc и realoc.
delete и delete[] - для тех что были выделены посредством new.
А если переменная была обявлена так: char str[] = "string"? Как очистить память для неё?
Мы про си.
Про delete понял. Память выделяется стандартной инициализацией при объявлении: char str[] = "string";
Я так понимаю в си для это служит free.
В любом случае получается нельзя освободить память с середины и до конца. Наверно потому что при объявлении (или при динамическом выделении) было указано количество выделенных байт, а если мы передадим указатель на середину, то нельзя будет определить сколько байт освободить, так?
Я пробовал так делать, сетуя на то что linux-ая IDA не может исполнять exe файлы (т.к. в системе для этого используется wine). Но результата такой же.
VirtualBox - гостевая XP 64bit, версия IDA 5.1 for 64bit. Отпинговал линя, из коробки дабы удостоверится в коннекте и затем пропустил через IDA (уже на винде) мой файл. Скрин можно увидеть выше (вопрос был отредактирован).