四瓣纸鹤
2015-04-20 14:46
采纳率: 50%
浏览 1.9k
已采纳

关于动态存储与静态存储的区别

什么时候要用到动态存储呢?它在用的时候还要指定大小,和静态分配区别在哪呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 夏湘宁 2015-04-20 15:21
    已采纳

    运行的时候若由用户指定了一个大小n,程序接下来就可以这样分配int *arr = (int *) malloc ( sizeof(int) * n );

    点赞 打赏 评论
  • blownewbee 2015-04-20 14:48

    编译的时候无法确定大小的,只能用动态存储。
    另外,程序中可能使用,也可能不使用的存储,用动态存储可以提高性能。

    点赞 打赏 评论
  • blownewbee 2015-04-20 14:55

    我是说编译时无法确定大小。而不是说无法确定大小。
    malloc中指定变量,而变量来自用户的输入,这种情况编译的时候就没法确定大小。

    点赞 打赏 评论
  • oyljerry 2015-04-20 15:09

    动态分配是运行时,比如程序运行的时候,用户输入一个值,程序根据输入的值分配对应大小的空间。而静态分配是程序编译的时候就指定了大小。

    点赞 打赏 评论
  • blownewbee 2015-04-20 15:10

    你的数组定义多大呢?
    C不允许你写
    int arr[n]; //如果n是变量

    点赞 打赏 评论
  • Evankaka 2015-04-20 15:38

    http://blog.csdn.net/evankaka/article/details/44457765
    栈,堆,全局,文字常量,代码区总结

    点赞 打赏 评论
  • blownewbee 2015-04-20 15:39

    http://codepad.org/1Ko6dHSj

    In function 'int main()':
    Line 3: error: ISO C++ forbids variable-size array 'a'
    compilation terminated due to -Wfatal-errors.
    你的代码没法编译的。

    点赞 打赏 评论

相关推荐 更多相似问题