malloc でメモリを割り当てます - 約 128 バイト。
後で、約 200 バイトで realloc を呼び出しますが、null が返されます!
解放すると有効なポインターが返され、次に別の 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 );
}
編集:修正。クラスの << 演算子をオーバーロードしていて、void ではなく *this を返すようにしました。どういうわけか、これはすべてを台無しにしていた!誰かがなぜこれが起こるのか説明できれば、それは素晴らしいことです!