对于C++中指针的错误初始化会产生什么后果呢?

ha9*_*3ar -8 c++ pointers initialization mmu

这个问题已被关闭,因为它没有向某些人提出真正的问题我从那以后更新了问题主体,现在可能会有所改善.但是,我希望大家都建议我如何改进这个问题,因为这是我在这方面的工作和研究.

RAII(资源分配是初始化)理论规定,如果我从MMU借用内存,我需要将其返回(新的和删除).但是,我想知道如果我在C++中做错的初始化实践的话会有什么好处.

如果我执行以下操作该怎么办:

double* pp1 = 0;
double* pp2 = 0;
Run Code Online (Sandbox Code Playgroud)

然后在我需要的地方使用pp1和pp2?这是根据标准编程实践初始化指针的错误方法吗?或者它是初始化.初始化完全取决于new运营商吗?

在设计中应该使用多少指针:

1)实时2)安全关键3)关键任务

此外,我在32位和64位计算机上运行相同的C/C++应用程序时发现了奇怪的结果.如果我搞乱指针,我的机器会变得很慢/表现不佳.因为在我的设计中使用了太多的指针,我的机器变慢了.对于一些"明显的"保密协议,我不能把我的代码放在这里.我很抱歉.为了澄清,我在返回结果之前删除了每个方法中使用的所有指针,即我的内存管理非常均衡和高效,不会导致堆栈溢出问题.

我知道这些问题可能过于开放,但我也在调查(Google,MISRA C++,英国计算机协会和IEEE),以找出详细的答案.我的想法是实际研究和开发一种用C++编程的方法,而不涉及很多指针.

我知道一个明显的答案是,"你用C++编程,这样你就可以使用指针并停止滥用你电脑的MMU".但如果有人有任何不同的想法,我想听听.

Luc*_*ore 6

哪种方法最适合使用指针?

在这种情况下,答案是根本不使用它们.什么是错的

double p1 = 1.1;
double p2 = 2.2;
Run Code Online (Sandbox Code Playgroud)

如果必须,将它们包装在智能指针中:

使用智能指针防止内存泄漏:

std::unique_ptr<double> pp1;
Run Code Online (Sandbox Code Playgroud)

如果必须使用原始指针(可疑),请初始化为nullptr:

身高nullptr超过NULL0:

double* pp1 = nullptr;
double* pp2 = nullptr;
Run Code Online (Sandbox Code Playgroud)

在指针指向有效位置之前,不能取消引用指针:

pp1 = new double(1.1);

*pp1; //VALID
*pp2; //UNDEFINED BEHAVIOR - pp2 is still nullptr
Run Code Online (Sandbox Code Playgroud)