Я выделяю память с помощью malloc - около 128 байт.
Позже я вызываю realloc с 200 байтами, но он возвращает ноль!
Возвращает действительный указатель, если я освобождаю, и затем другой malloc, однако я хотел бы использовать realloc.
Чем можно объяснить это поведение (у меня явно не хватает памяти)? Это правильное поведение?
Кодовые биты:
//class constructor
size = 0;
sizeAllocated = DEFAULT_BUFFER_SIZE; //64
data = (char*)malloc(sizeAllocated * sizeof(char)); //data is valid ptr now, I've checked it
data[0] = '\0';
//later on:
//append function
bool append(char** data, const char* str, size_t strLen) {
if((size + strLen) >= sizeAllocated) {
sizeAllocated += strLen + 1 + BUFFER_ALLOCATION_STEP;
char* temp = realloc(*data, sizeAllocated * sizeof(char));
if(temp)
*data = temp;
return( temp != NULL );
}
РЕДАКТИРОВАТЬ: исправлено. Я перегружал оператор << для своего класса, и он возвращал * this вместо void. Каким-то образом это все испортило! Если бы кто-нибудь мог объяснить, почему это произошло, было бы неплохо! </strong>