liuerchaohappy
2015-08-27 16:23
采纳率: 28.6%
浏览 1.9k

dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以通过这个指针读取它的成员变量吗

dll里面初始化结构体,返回应用程序指向结构体的指针,应用程序可以直接通过这个指针读取它的成员变量吗?

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

4条回答 默认 最新

  • threenewbee 2015-08-27 23:24

    当然是可以的。但是更好的方式是把分配内存的工作交给调用者去做。因为这样不容易忘记释放内存。申请和释放的代码成对出现。

    参考windows api里的GetWindowRect,它由调用者传入一个lpRect结构体指针,函数获取了窗口坐标,填充它。

    打赏 评论
  • 91program 2015-08-27 23:43

    只要是在同一个 EXE 内,也就是相同的询址空间内,指针都可以正常访问的。
    无论是 DLL 中,还是在哪里。

    打赏 评论
  • kinslo 2015-08-28 02:07

    你想这么用的话,需要保证两点。

    1、你在内部初始化结构体对象时,必须使用malloc或new在堆上分配内存,然后在函数外使用后再释放。否则,你直接构造对象(也就是在栈上分配内存),那么你将返回野指针,这个非常危险。

    2、必须保证你动态库外部程序也有相同的结构体声明,否则你指针无法完成转化,也就不能达到你要直接操作的目的了。

    另外建议你传递时指针时用通用性指针,别直接用结构体指针,使用时在转化

    打赏 评论
  • oyljerry 2015-08-28 02:17

    只要在同一个进程空间,同时是共享堆等,然后DLL指针在合法生命期,那么就可以访问它的成员变量

    打赏 评论

相关推荐 更多相似问题