你能在堆栈上定义一个数组并将指针传递给全局变量吗?

标签 c arrays memory stack global

我在不支持任何内存分配命令的微芯片上编写 C 语言,但它确实喜欢指针(当然)。所以我的问题是:

有没有办法在函数中定义数组,并将指向该数组的指针传回全局变量?

这将是一种无需 malloc、realloc 或 calloc 即可使用动态内存的方法。本质上,堆栈内存在不破坏自身的情况下被传递回全局。我假设特别需要 alloc 命令来确保它不会被破坏,但我想检查一下是否有办法解决这个问题。

最佳答案

  1. 是的,您可以在函数中声明数组。数组的内存将在调用堆栈上 - 但要小心,没有 malloc 通常伴随着一个小堆栈。
  2. 是的,您可以将局部声明的数组的地址赋予全局声明的指针。
  3. 是的,在某些情况下它可以成为动态内存的便捷来源,但无论您是声明本地数组还是调用饱受诟病的 alloca 函数,结果都是一样的。

但是,内存只有在你从数组所在的函数返回之前是安全的,所以你不能把它变成一个 malloc 风格的东西,而只是为你的叫 child 。

关于你能在堆栈上定义一个数组并将指针传递给全局变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112108/

相关文章:

C编程-递归填充数组

java - 使用 ImageGetter 从 HTML 抓取图像时出现内存不足错误

c++ - 为什么变量指针包含相同数据类型的地址?

c - 解析 HTTP GET - C

通过Android模拟器无法读取但可以写入串口

c++ - 我怎样才能确定 dlopen 正常工作

c# - 如何正确配置 foreach 循环以避免索引超出范围错误?

java - 如果我的实例是一个数组,我如何设置它的数组类型变量的值

java - Map<Integer, String> 还是 String[]?

python - 将大文件逐行读入 Python2.7 时的内存使用