malloc & free
Код:
char* str = (char *)malloc(MAXSTR);
Далее идет работа со строкой как с буфером.
Но при попытке
Код:
free(str);
Выдается ошибка типа
Код:
"Access violation at adress ... in module 'BORLANDMM.DLL'. Read of adress ...
Причем, как-то раз проблема решилась присвоением непосредственно перед освобождением :
Код:
str="";
Но в этот раз такой вариант не дает никаких результатов ...
Они наверняка не совпадают.
Так делать нельзя:
Код:
char *str=malloc(...);
str="";
free(str);
str="";
free(str);
так тоже нельзя:
Код:
char *str=malloc(...);
str++;
free(str);
str++;
free(str);
вот так нужно:
Код:
char *str=malloc(...);
char *str1=str;
str1++;
free(str);
char *str1=str;
str1++;
free(str);
Ошибка была действительно в том, что указатель инкрементировался.
Однако не совсем понял, почему нельзя делать так:
Код:
char *str=malloc(...);
str="";
free(str);
str="";
free(str);
Ведь здесь же вроде адрес исходного указателя не изменяется ...
Цитата:
Originally posted by NinthBit
Спасибо, mike!
Ошибка была действительно в том, что указатель инкрементировался.
Однако не совсем понял, почему нельзя делать так:
Ведь здесь же вроде адрес исходного указателя не изменяется ...
Спасибо, mike!
Ошибка была действительно в том, что указатель инкрементировался.
Однако не совсем понял, почему нельзя делать так:
Код:
char *str=malloc(...);
str="";
free(str);
str="";
free(str);
Ведь здесь же вроде адрес исходного указателя не изменяется ...
Как это не меняется !?! А что по-твоему происходит при
Код:
str="";