这是生成GUID的可靠方式
Is this a reliable way of generating a 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的堆栈,因此在这种情况下,您最多会获得一千个唯一值。
相关文章:
- 如何在c++中为模板函数实例创建快捷方式
- 在c代码之间共享数据的最佳方式
- 在C++中将函数压缩为两种方式
- 以螺旋方式打印矩阵的程序.(工作不好)
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 创建引用向量的优雅方式
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 不同/较旧的处理器运行c++代码的方式是否不同
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 重载方法的方式会在使用临时调用时生成编译器错误
- 在reactor中存储eventHandlers的最佳方式是什么
- 如何以优化的方式同时迭代两个间距不相等的数组
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 为什么C++有不同的变量初始化方式?
- 在AVX通道中混洗的最佳方式
- 如何重新定义MPI_FLOAT,MPI_DOUBLE以 typedef 的方式
- 从 GUID 获取 USB 卷路径
- 这是生成GUID的可靠方式