忽略多线程问题之前看,是以下保证工作:跳跃
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