world_pioneer
world_pioneer
2016-08-15 11:59
采纳率: 94.9%
浏览 1.2k

关于指针管理内存的小疑问

这程序貌似有点不可理喻,但我想阐述的就是:既然可以反复给word数组赋值,那么在整个程序只使用这么一个或少数几个数组不就同样能达到节省内存的作用?指针的new和delete有什么优势?我是初学者,求解答!!图片

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

8条回答 默认 最新

  • qq_26348877
    --~Vampire 2016-08-28 13:57
    已采纳

    现在pc机器上的内存已经是比较充裕了,表面上看数组用的少了,节省了微不足道的内存,但如果涉及很多数据,很多类型是,频繁的对
    那么几个数组进行读写操作,效率上是不可取得,并且也不利于后期的维护工作
    new和delete用于动态分配和释放内存,属于动态内存管理,这块内存有程序员管理,使用方便自由,灵活

    点赞 评论
  • weixin_35863671
    sanyi222 2016-08-15 12:24

    使用数组是静态的只有所在的函数执行完内存才被回收,new和delete操作可以实时分配和回收以达到动态分配内存的目的

    点赞 评论
  • yongheng_1999
    yongheng_1999 2016-08-15 14:31

    你的数组是在主函数里面定义的。可以试试在子函数里面定义试试。你就可以看到你用该方式定义的数组的生命周期仅仅是在子函数执行时有效,一旦子函数执行结束,那么数组就消亡了。怎么达到你所说的用几个数组就可以重复利用呢。用new或者malloc申请动态内存的优势就可以在子函数里面体现,即使子函数执行后,依然存在,不会消亡,直至你用delete结束。所以这是new.delete的一个好处。另外,你的静态数组word[10],如果后面输入的字符串大于10呢,是不是比较麻烦,要扩展。而new的好处是到了后面要输入较长或者较短的字符串,它的长度你可以自己指定。不用想静态数组那样,一定要事先指定一个定长的内存段。

    点赞 评论
  • yongheng_1999
    yongheng_1999 2016-08-15 14:31

    关于动态内存和指针的内容。可以看看我的博客。
    http://blog.csdn.net/yongheng_1999/article/details/52166042

    点赞 评论
  • wangdan901990
    wangdannnnnnn 2016-08-16 01:27

    既然可以反复给word数组赋值,那么在整个程序只使用这么一个或少数几个数组不就同样能达到节省内存的作用?
    答案是是的,这种技术在资源紧张的嵌入式平台,确实是这么做的。然而实现并不容易,需要计算买个字节,以确保同一块内存不会被多处读写使用。

    指针的new和delete有什么优势?
    随用随取,用完释放。

    点赞 评论
  • John_ToStr
    John_ToDebug 2016-08-16 10:31

    小伙子,你想的太简单了,建议好好深入学习,之后你会明白的...

    点赞 评论
  • xiaohuh421
    xiaohuh421 2016-09-02 02:17

    你问优势, 那么告诉你一个优势. char word[10]; 仅是在栈上申请的一个小内存, 每个程序的栈空间大小是固定的, 一般默认1M

    1M的栈, 你能做什么?

    这时new就不同了, 理论上来说是, 只要内存够, 你想要多大就能多大.

    点赞 评论
  • skaitiaozhan
    skaitiaozhan 2016-09-07 02:44

    可以预见,你这样写小程序没问题。加入某个大的工程,爆栈分分钟。

    点赞 评论

相关推荐