gpt4 book ai didi

c - 跳跃前先看一下

转载 作者:行者123 更新时间:2023-12-02 08:56:47 24 4
gpt4 key购买 nike

忽略多线程问题,以下内容保证有效:

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);
}

这主要是出于好奇。我没有计划将其用于任何用途,但我相信应该保证它可以工作,并且确定它会提供有用的信息。

最佳答案

没有。即使没有多线程,malloc 调用也会从操作系统获取(内存)资源。通常(Windows、Linux、Mac 等)操作系统可以在程序执行时随时执行影响可用资源的操作。这意味着在您的检查和实际分配之间,内存可能会变得“不可用”。

如果您对操作系统有异常完全的控制,那么就有可能使其变得健壮 - 但这将非常棘手。

关于c - 跳跃前先看一下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com