【问题标题】:Why using both malloc/calloc/realloc and brk functions will results in undefined behavior?为什么同时使用 malloc/calloc/realloc 和 brk 函数会导致未定义的行为?
【发布时间】:2023-02-22 12:38:02
【问题描述】:

这是否意味着同时使用(malloc 或 calloc 或 realloc)之一和(brk/sbrk)之一会导致 UB,或者同时使用 malloc 和 calloc 也会导致 UB?

这发生在整个程序中还是只是一个源文件?

【问题讨论】:

  • 你在哪里看到的?
  • 我认为一般建议是避免使用brksbrkmalloc 系列函数使用它们,通常应该足以满足您的内存分配需求。
  • 这是我今天学习的机器组织课

标签: c malloc dynamic-memory-allocation calloc brk


【解决方案1】:

C 语言不知道 brk/sbrk。它是现有的实现之一。您的实现我没有这些功能。

不要使用它,除非你知道你在做什么。

这是否意味着使用(malloc 或 calloc 或 realloc)之一和一个 of(brk/sbrk) 同时导致 UB

例如,如果您减少程序中断的位置并使用在先前较大内存中分配的内存,则可能是这样。

或者同时使用malloc和calloc也会导致UB?

在同一程序中使用mallocrealloccalloc等标准库函数将不会调用 UB

这发生在整个程序中还是只是一个源文件?

UB 影响整个正在运行的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 2020-01-31
    • 2021-09-01
    • 2015-07-10
    • 2014-10-10
    • 2012-01-08
    • 2011-07-03
    • 2011-11-21
    相关资源
    最近更新 更多