-9

这个问题已经关闭,因为它对某些人来说似乎不是一个真正的问题我从那时起更新了问题主体,现在可能会好一些。但是,我希望你们都建议我如何改进这个问题,因为这是我在这个领域的工作和研究。

RAII(资源分配即初始化)理论规定,如果我从 MMU 借用内存,我需要将其归还(新建和删除)。但是,我想知道如果我在 C++ 中做不好的初始化实践会产生什么后果。

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

double* pp1 = 0;
double* pp2 = 0;

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

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

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

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

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

我知道一个显而易见的答案是,“你用 C++ 编程,这样你就可以使用指针并停止滥用你的 PC 的 MMU”。但如果有人有任何不同的想法,我想听听。

4

1 回答 1

6

使用指针最合适的做法是什么?

在这种情况下,答案是根本不使用它们。只是有什么问题

double p1 = 1.1;
double p2 = 2.2;

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

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

std::unique_ptr<double> pp1;

如果您必须使用原始指针(值得怀疑),请初始化为nullptr

更喜欢nullptror :NULL0

double* pp1 = nullptr;
double* pp2 = nullptr;

在使指针指向有效位置之前,您无法取消引用该指针:

pp1 = new double(1.1);

*pp1; //VALID
*pp2; //UNDEFINED BEHAVIOR - pp2 is still nullptr
于 2012-11-05T10:15:17.883 回答