我在不支持任何内存分配命令的微芯片上编写 C 语言,但它确实喜欢指针(当然)。所以我的问题是:
有没有办法在函数中定义数组,并将指向该数组的指针传回全局变量?
这将是一种无需 malloc、realloc 或 calloc 即可使用动态内存的方法。本质上,堆栈内存在不破坏自身的情况下被传递回全局。我假设特别需要 alloc 命令来确保它不会被破坏,但我想检查一下是否有办法解决这个问题。
最佳答案
- 是的,您可以在函数中声明数组。数组的内存将在调用堆栈上 - 但要小心,没有
malloc
通常伴随着一个小堆栈。 - 是的,您可以将局部声明的数组的地址赋予全局声明的指针。
- 是的,在某些情况下它可以成为动态内存的便捷来源,但无论您是声明本地数组还是调用饱受诟病的
alloca
函数,结果都是一样的。
但是,内存只有在你从数组所在的函数返回之前是安全的,所以你不能把它变成一个 malloc
风格的东西,而只是为你的叫 child 。
关于你能在堆栈上定义一个数组并将指针传递给全局变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112108/