gpt4 book ai didi

检查指针是否分配内存

转载 作者:太空狗 更新时间:2023-10-29 16:16:18 25 4
gpt4 key购买 nike

我们可以检查传递给函数的指针是否在 C 中分配了内存吗?

我在 C 中编写了自己的函数,它接受字符指针 - buf [指向缓冲区的指针] 和大小 - buf_siz [缓冲区大小]。实际上,在调用此函数之前,用户必须创建一个缓冲区并为其分配 buf_siz 的内存。

由于用户有可能忘记进行内存分配并只是将指针传递给我的函数,所以我想检查一下。那么有什么方法可以检查我的函数以查看传递的指针是否真的分配了 buf_siz 内存量.. ??

EDIT1: 似乎没有标准库来检查它..但是是否有任何肮脏的 hack 来检查它..??

EDIT2:我知道我的函数会被优秀的 C 程序员使用...但我想知道我们是否可以检查.. 如果可以的话,我想听听..

结论:因此无法检查某个特定指针是否在函数内分配了内存

最佳答案

除了一些特定于实现的 hack 之外,您无法检查。

除了指向的位置之外,指针没有其他信息。你能做的最好的事情就是说“我知道这个特定的编译器版本是如何分配内存的,所以我将取消引用内存,将指针向后移动 4 个字节,检查大小,确保它匹配......”等等。您不能以标准方式执行此操作,因为内存分配是实现定义的。更不用说他们可能根本没有动态分配它。

你只需要假设你的客户知道如何用 C 编程。我能想到的唯一的解决方案是自己分配内存并返回它,但这不是一个小的改变。 (这是一个更大的设计变更。)

关于检查指针是否分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576300/

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