我用 malloc 分配了一些内存——大约 128 字节。
稍后,我用大约 200 个字节调用 realloc,但它返回 null!
如果我做free,它会返回一个有效的指针,然后是另一个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。不知何故,这把一切都搞砸了!如果有人能解释为什么会发生这种情况,那就太好了!