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