C++ 我退出循环后如何访问地址?

C++ 我退出循环后如何访问地址?,c++,pointers,C++,Pointers,现在的问题是: 程序退出循环后,分配给ptr的三个地址是否都存在于内存中 如果是,在我退出循环后访问这些地址的方法是什么 内存是保留的,但没有指向内存的指针,所以这就是所谓的内存泄漏(保留内存,但无法访问)。您可能需要一个数据数组*来保存这些指针,以便在完成这些指针时删除它们或以后使用它们。我猜不出您想要实现什么。。。 但我认为,你正在努力实现类似的目标。。。。 但是,如果您想使用您的实现制作链表,您可以尝试以下方法 ptr had address = 100 after first loo

现在的问题是:

  • 程序退出循环后,分配给ptr的三个地址是否都存在于内存中
  • 如果是,在我退出循环后访问这些地址的方法是什么

  • 内存是保留的,但没有指向内存的指针,所以这就是所谓的内存泄漏(保留内存,但无法访问)。您可能需要一个数据数组*来保存这些指针,以便在完成这些指针时删除它们或以后使用它们。

    我猜不出您想要实现什么。。。 但我认为,你正在努力实现类似的目标。。。。

    但是,如果您想使用您的实现制作链表,您可以尝试以下方法

     ptr had address = 100 after first loop
     ptr had address = 200 after second loop
     ptr had address = 300 after third loop
    
    #包括
    结构数据{
    int x;
    数据*ptr;
    数据()
    {
    x=-1;
    ptr=NULL;
    }
    };
    数据*头=新数据();
    数据*指针=头;
    int main(){
    int i=0;
    而(i x=/*您的数据*/;
    ::指针->ptr=指针;
    ::指针=指针;
    i++;
    }
    i=0;
    数据*指针=头部->下一步;
    
    而(i对于初学者,将不会为任何带有代码的ptr分配内存

    #include<iostream.h>
    struct data {
      int x;
      data *ptr;
      data()
      {
       x = -1;
       ptr = NULL;
      }
    };
    
    data *head = new data();
    data *pointer = head;
    
    int main() {
     int i = 0;
    
      while( i <=3 ) {
        data *pointer = new data();
        pointer->x = /*YOUR DATA*/;
       ::pointer->ptr = pointer;
       ::pointer = pointer;
       i++;
      }
    
      i=0;
       data* pointer = head->next;
       while( i <=3 ) {
       cout<<pointer->x;
       pointer = pointer->ptr;
       i++;
       }
      system("pause");
    
    }
    
    这将根本不会进入
    while
    循环

    但是,如果您希望访问
    struct
    中包含的ptr,则可以尝试此操作。我不确定通过将ptr分配给自己的struct对象地址来实现什么。下面的程序将打印
    x
    的值和分配给
    ptr
    的地址

    int i = 0;
    while( i >= 3)
    

    就我个人而言,当我知道我要做的迭代次数时,我会选择
    进行循环,并且只有当我希望在满足逻辑表达式之前迭代未知次数时,才会使用

    此代码有许多问题。1.内存泄漏。2.
    使用命名空间std;
    3.这是
    的问题循环,使其成为一个。4.如此类推,你是否试图创建一个链接列表?@RTS不在这里,但它是相关的。@Suhail Gupta你看到我的帖子了吗,有用吗?
    
    int i = 0;
    while( i >= 3)
    
    #include<iostream>
    using namespace std;
    struct data {
      int x;
      data *ptr;
    };
    
    int main() {
     int i = 0;
     data pointer[4];
      while( i <=3 ) {
        pointer[i].x = i;
        pointer[i].ptr = &pointer[i];  
        i++;
      }
    
    for( int i = 0; i <= 3; i++ )
    {
       cout<< pointer[i].x << endl;
       cout<< pointer[i].ptr << endl;
    }
    
    }
    
    0
    0xbf834e98
    1
    0xbf834ea0
    2
    0xbf834ea8
    3
    0xbf834eb0