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".但如果有人有任何不同的想法,我想听听.
哪种方法最适合使用指针?
在这种情况下,答案是根本不使用它们.什么是错的
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超过NULL或0:
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)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |