忽略多線程問題之前看,是以下保證工作:跳躍
int can_alloc(size_t i)
{
void *p = malloc(i);
if(p == NULL) return 0;
free(p);
return 1;
}
// later
if(can_alloc(10))
{
char *c = malloc(10); // no need to verify, we already did?
memcpy(c, "something", 10);
}
這主要是出於好奇。我沒有計劃將它用於任何事情,但我相信它應該保證能夠工作,並且確實知道這些信息。
我認爲(在大多數操作系統中)每個進程只有相當數量的內存分配給該進程。 – 2010-11-27 11:30:55
我從來沒有聽說過。我認爲他們只是分配了他們要求的東西(可能四捨五入爲大塊)。 – sje397 2010-11-27 11:33:15