我正在学习 C++,我想知道使用对象的分配内存地址作为临时应用程序级别标识符是否是个好主意。
问问题
179 次
3 回答
2
这可能不是最好的主意。如果不出意外,它会严重限制您未来移动/克隆对象的能力。如果您依靠它从 ID 中查找对象,也会增加风险——过时的引用可能会导致崩溃。
于 2012-07-04T23:11:21.770 回答
2
你不应该这样做。因为除了这里已经提到的内容之外,地址会被重用,并且您的 id(本质上是一个指针)可以在旧对象被释放后被其他对象重用。例如,如果此 ID 将用于访问某些会话信息,那么您很可能正在访问/修改其他用户的会话 - 这不是一件好事。但是,您可以将地址与其他一些信息结合使用,例如线程 ID、当前系统时间等...
于 2012-07-05T00:23:45.727 回答
1
好吧,如果您使用 new() 创建对象,则返回的对象实例指针实际上就是该对象。它成为应用程序标识符,直到显式 dispose()d。我尽量不在堆栈上构建对象——我写了太多的多线程代码,所以它太危险了。
显然,您不能将地址作为 ID 做很多事情 - 例如,您不能递减/递增 1 以指向具有前/后 ID 的对象。
于 2012-07-04T23:40:09.630 回答