这个问题已被关闭,因为它没有向某些人提出真正的问题我从那时起更新了问题机构,现在可能会有所改善。但是,我希望大家都建议我如何改进这个问题,因为这是我在这方面的工作和研究。
RAII(资源分配是初始化)理论规定如果我从MMU借用内存,我需要将其返回(新的和删除)。但是,我想知道如果我在C ++中做错的初始化实践的话会有什么好处。如果我执行以下操作该怎么办:
double* pp1 = 0;
double* pp2 = 0;
然后在我需要的地方使用pp1和pp2?这是根据标准编程实践初始化指针的错误方法吗?或者它是初始化。初始化完全取决于new
运算符吗?
在设计中应该使用多少指针:
1)实时 2)安全性至关重要 3)关键任务
此外,我在32位和64位计算机上运行相同的C / C ++应用程序时发现了奇怪的结果。如果我搞乱指针,我的机器会变得很慢/表现不佳。因为在我的设计中使用了太多的指针,我的机器变慢了。对于一些“明显的”保密协议,我不能把我的代码放在这里。我很抱歉。为了澄清,我在返回结果之前删除了每个方法中使用的所有指针,即我的内存管理非常均衡和高效,不会导致堆栈溢出问题。
我知道这些问题可能过于开放,但我也在调查(Google,MISRA C ++,英国计算机协会和IEEE),以找出详细的答案。我的想法是实际研究和开发一种用C ++编程的方法,而不涉及很多指针。
我知道一个明显的答案是,“你用C ++编程,这样你就可以使用指针并停止滥用你电脑的MMU”。但如果有人有任何不同的想法,我想听听它。
答案 0 :(得分:6)
哪种方法最适合使用指针?
在这种情况下,答案是根本不使用它们。只是
有什么问题double p1 = 1.1;
double p2 = 2.2;
使用智能指针防止内存泄漏:
std::unique_ptr<double> pp1;
nullptr
:首选nullptr
优先于NULL
或0
:
double* pp1 = nullptr;
double* pp2 = nullptr;
在指针指向有效位置之前,不能取消引用指针:
pp1 = new double(1.1);
*pp1; //VALID
*pp2; //UNDEFINED BEHAVIOR - pp2 is still nullptr