namedajipai
namedajipai
2016-08-09 08:58
采纳率: 90.6%
浏览 964
已采纳

dll使用静态方式调用的时候,堆栈的操作是放在程序里面了么?

dll使用静态方式调用的时候,堆栈的操作是放在程序里面了么?可是堆栈是动态的啊,这是怎么回事?

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

3条回答 默认 最新

  • caozhy
    已采纳

    不管是静态调用还是动态调用,都是放在堆栈里。只是动态调用是在程序运行的时候通过loadlibrary加载dll,然后getprocaddress获得的函数指针。

    点赞 评论
  • u014097230
    LB_莫贺延碛 2016-08-09 09:38

    呃呃,给你推荐一篇文章好了:http://www.cnblogs.com/oubo/archive/2011/12/06/2394631.html
    另外有本《深入理解计算机系统》的书, 在程序链接那一块应该有你想要知道的内容。
    虽然以上两个都是linux系统下程序组成和运行的方式,但是windows和它在这一点上应该相差不大

    点赞 评论
  • u014097230
    LB_莫贺延碛 2016-08-09 09:47

    另外我记得, 堆栈段应该不在可执行文件中。和其他段(代码段Text Segment, 数据段Data Segment,BSS段)一样,它也有自己的大小,
    但是这个大小:1.在linux系统下,是由系统命令决定的。 2在windows系统下,栈空间的大小存储在可执行文件中

    点赞 评论

相关推荐