小编Oma*_*mar的帖子

解释复制构造函数示例

复制构造函数用于许多事情,例如当我需要使用指针或为对象动态分配内存时.但是看看这个例子tutorialpoint.com:

#include <iostream>

using namespace std;

class Line
{
public:
  int getLength( void );
  Line( int len );             // simple constructor
  Line( const Line &obj);  // copy constructor
  ~Line();                     // destructor

private:
  int *ptr;
};

// Member functions definitions including constructor
Line::Line(int len)
{
cout << "Normal constructor allocating ptr" << endl;
// allocate memory for the pointer;
ptr = new int;
*ptr = len;
}

Line::Line(const Line &obj)
{
cout << "Copy constructor allocating ptr." << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ oop copy-constructor

5
推荐指数
1
解决办法
3万
查看次数

在物理菜单按钮上显示导航抽屉

我想在用户点击物理菜单按钮时显示导航抽屉,我会覆盖菜单按钮,如下所示:

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ( keyCode == KeyEvent.KEYCODE_MENU ) {

                // some code here to show navigation drawer

            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在此方法中显示导航抽屉.

android navigation-drawer

3
推荐指数
1
解决办法
3114
查看次数

自动局部变量是否存储在C中的堆栈中?

好吧,我知道main()自动局部变量存储在堆栈中,也是任何函数自动局部变量,但是当我在gcc版本4.6.3上尝试了以下代码时:

#include <stdio.h>

    int main(int argc, char *argv[]) {

        int var1;
        int var2;
        int var3;
        int var4;
        printf("%p\n%p\n%p\n%p\n",&var1,&var2,&var3,&var4);
        }
Run Code Online (Sandbox Code Playgroud)

结果是:

0xbfca41e0
0xbfca41e4
0xbfca41e8
0xbfca41ec
Run Code Online (Sandbox Code Playgroud)

根据堆栈顶部的var4和堆栈底部的var1以及堆栈指针现在指向var1地址下面的地址....但是为什么var4位于堆栈顶部而var1位于底部. ..在var1之后声明,所以我认为逻辑上var1应该在堆栈的顶部,var1之后声明的任何变量应该在内存中低于它...所以在我的例子中这样:

>>var1  at 0xbfca41ec
>>var2  at 0xbfca41e8
>>var3  at 0xbfca41e4
>>var4  at 0xbfca41e0
>>and stack pointer pointing here  
..
Run Code Online (Sandbox Code Playgroud)

..

编辑1:

在阅读@AusCBloke的评论后,我尝试了以下代码:

#include <stdio.h>


 void fun(){
 int var1;
 int var2;
 printf("inside the function\n");
 printf("%p\n%p\n",&var1,&var2);

 }


 int main(int argc, char *argv[]) {


int var1;
int var2;
int var3;
int var4;



printf("inside the main\n");
printf("%p\n%p\n%p\n%p\n",&var1,&var2,&var3,&var4);
fun();
return …
Run Code Online (Sandbox Code Playgroud)

c memory gcc local-variables

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