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

时间:2016-01-22 06:25:29

标签: c pointers stack

变量(结构)的大小是否有限制,可以通过指针传递给函数。也可以定义一个变量大小(结构中的结构等等)和数组大小从100-500不等) 为了安全运行程序。(没有堆栈溢出,内存问题,指针损坏) 这是参考具有限制为64K至512K的存储器的嵌入式系统

2 个答案:

答案 0 :(得分:2)

您似乎有三个问题:

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

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

  • 我可以从堆中分配多大的结构(这意味着用newmalloc分配的结构:堆是可用内存的“剩余”;这个区域通常更大大型分配的最佳位置;同样,最大空间完全取决于执行环境。进程的任何时候都有最大量的连续堆,可以分配给最大的对象。

答案 1 :(得分:0)

就C语言而言,结构的最大尺寸是

2 ^ (8*sizeof(size_t))个字节,

其中^应该被理解为""的权力。

除此之外,限制取决于您的特定系统。