这是生成GUID的可靠方式

  • 本文关键字:方式 GUID c++ guid
  • 更新时间 :
  • 英文 :


我正在尝试以平台不可知的方式生成一个GUID,大多数搜索结果都建议使用Boost或Platform Comment Libraries。我记得曾经遇到过以下片段,我想知道这是否是生成GUID的可靠方法:

unsigned int generateGuid()
{
    char c;
    return (unsigned int)&c;
}

更具体地说,这是否总是保证独特的价值?如果没有,这样做的一些很好的轻巧和跨平台方法是什么?

A basic example:
#include <boost/uuid/uuid.hpp>            // uuid class
#include <boost/uuid/uuid_generators.hpp> // generators
#include <boost/uuid/uuid_io.hpp>         // streaming operators etc.
int main() {
    boost::uuids::uuid uuid = boost::uuids::random_generator()();
    std::cout << uuid << std::endl;
}
Example output:

不,不是。此功能将根据堆栈的返回某些地址。在随后的两个通话或紧密循环中,它将始终是相同的地址。例如,在Visual Studio中,默认堆栈大小为1 MB,因此,在最好的情况下,您将获得一百万个唯一值。典型程序不使用超过1kb的堆栈,因此在这种情况下,您最多会获得一千个唯一值。

相关内容

  • 没有找到相关文章

最新更新