c - 可以在c函数中传递的指针所指向的变量的最大大小是多少?

标签 c pointers stack

可以通过指向函数的指针传递的变量(结构)的大小是否有限制。此外,可以定义变量的大小有多大(结构中的结构等等......并且具有数组尺寸从 100-500 不等) 为了程序的安全运行。(没有堆栈溢出,内存问题,指针损坏) 这是针对内存限制为 64K 至 512K 的嵌入式系统

最佳答案

您似乎有三个问题:

  • 指针可以指向多大的内存块:这里的限制是指针大小的限制 - 无论是 32 位还是 64 位指针。但实际上,没有机器可能有足够的内存来使 64 位限制成为问题。

  • 我可以在堆栈上声明多大的结构(这意味着在某种程度上的本地声明):堆栈大小在所有硬件上都受到限制,通常比堆受到更多限制,堆栈不适合用于大型对象和堆栈限制可能会受到限制,尤其是在嵌入式系统中。这里的问题不是单个堆栈对象的大小,而是受限制的堆栈的总大小。

  • 我可以从堆中分配多大的结构(这意味着使用 newmalloc 分配的结构:堆是可用内存的“其余”部分; 该区域通常较大,对于大型分配来说​​是更好的地方;同样,最大空间完全取决于执行环境。进程在任何时候都有一个最大可用的连续堆数量,该数量为可以容纳的最大对象被分配。

关于c - 可以在c函数中传递的指针所指向的变量的最大大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940314/

相关文章:

c++ - 在多个类中实现堆栈时的单一定义规则 (ODR)

c++ - 使用 32 位无符号整数乘以 64 位数字的算法

c - 我正在使用 '->' 但输出仍在询问我是否打算使用 '->'

c - 为什么它在通过引用传递时只加 2?

c++ - 使用 C 中内存地址的 Julia 读/写结构数据

使用 ulimit 命令更改堆栈上的软限制

检查 C 中可用的堆栈大小

无法理解这个错误

c - 关于 BYTE 类型的 strlen() 的警告

c - POSIX ERE(扩展正则表达式)——从正则表达式中排除有限的黑名单