Это код:C++ как выделить память указателю на структуру, которая является членом другой второй структуры?
# include<iostream>
#include<stdio.h>
using namespace std;
struct hub
{
int info;
int info2;
};
struct hub2
{
hub *p;
};
int main()
{
hub *pi;
pi = new hub; // allocate memory for pi
pi->info = 30;
pi->info2 = 45;
cout<<pi->info<<" "<<pi->info2; // shows 30 and 45
hub2 obj; // declare a hub2 data type
obj.p = new hub; // allocate memory for obj.p
obj.p = pi; // now obj.p should be identical to what pi points to right?
cout<<"\n"<<obj.p->info<<" "<<obj.p->info2; // This will show 30 and 45
cout<<endl;
delete pi;
cout<<"\n"<<obj.p->info<<" "<<obj.p->info2;//This shows random numbers,why ???
}
Почему не obj.p выделения памяти после того, как я удаляю памяти, выделенной для указателя пи? мне действительно нужно решение this.I должны закончить очень важный проект, и я застрял здесь с в этой памяти выделяя часть :(
Вы удалили объект, на который указывает 'obj.p', теперь он является оборванным указателем, указывающим на нераспределенную (или потенциально повторно используемую) память. –
Если вы хотите скопировать значения (потому что вы выделили 'obj.p = new hub;' тоже), используйте больше '*'. То есть. 'obj. * p = * pi;'. И иногда удалять вторую новую вещь. – deviantfan