我正在学习C++,并且我开始知道指针如果保持未初始化可能指向内存中的随机位置并产生内存可能被其他程序使用的问题.
现在,如果是这种情况,我们就不应该在代码的任何部分使用这一行:
int* ptr;
Run Code Online (Sandbox Code Playgroud)
相反,我们应该有类似的东西
int* ptr = NULL; //Is this going to avoid the problem
Run Code Online (Sandbox Code Playgroud)
请建议,因为我int* ptr;在很多书中看过第一行(),所以我对此表示怀疑.如果可能的话也举一些例子.
C++ 17将包括std::byte一种用于一个可原子寻址的存储器单元的类型,在典型的计算机上具有8位.
在这种标准化之前,指向"原始"内存时已经存在一些困境 - 在一方面使用char*/ unsigned char*另一方面void *.现在,void *删除了偏好的原因之一- std::byte没有与a相同的内涵char; 它是关于原始内存,而不是字符.
所以,我的问题是:什么是一个很好的经验法则std::byte,关于何时更喜欢它void *以及什么时候相反?
当然,当你处理旧代码或C代码时,你会受到它所接受的约束; 我主要是指新代码,您可以选择所有类型.