相关疑难解决方法(0)

代码中未初始化的指针

我正在学习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++ pointers null-pointer

30
推荐指数
3
解决办法
4万
查看次数

严格的别名规则和'char*'指针

什么是严格别名规则的接受答案提到您可以使用char *别名而不是其他方式.

这对我来说没有意义 - 如果我们有两个指针,一个是指向同一个位置的类型char *,另一个struct something *指向同一个位置,那么第一个别名可能是第二个但第二个不是第一个别名吗?

c c++ strict-aliasing

20
推荐指数
2
解决办法
4115
查看次数

使用std :: byte标准化,我们何时使用void*和一个字节*?

C++ 17将包括std::byte一种用于一个可原子寻址的存储器单元的类型,在典型的计算机上具有8位.

在这种标准化之前,指向"原始"内存时已经存在一些困境 - 在一方面使用char*/ unsigned char*另一方面void *.现在,void *删除了偏好的原因之一- std::byte没有与a相同的内涵char; 它是关于原始内存,而不是字符.

所以,我的问题是:什么是一个很好的经验法则std::byte,关于何时更喜欢它void *以及什么时候相反?


当然,当你处理旧代码或C代码时,你会受到它所接受的约束; 我主要是指新代码,您可以选择所有类型.

c++ byte idiomatic c++17

9
推荐指数
1
解决办法
1391
查看次数

标签 统计

c++ ×3

byte ×1

c ×1

c++17 ×1

idiomatic ×1

null-pointer ×1

pointers ×1

strict-aliasing ×1