ОБСУЖДЕНИЕ

опять ошибка

1 ответов 3,7 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
пишу программу из учебника...типа примитивной телефонной книги..


создал клас

class person{
int number;
char name[32];
char surname [32];
int age;
char phone[32];
public:
void Add(char*, char*, char*, char*);
int Age();
void print();
void Search();
void Sort ();
};

void person::Add(char *name, char *surname, char *b_day, char *phone){
strcpy (this->name,name);
strcpy (this->surname,surname);
strcpy (this->phone,phone);
}
void person::print(){
cout<<surname<<" "<<name<<endl;
cout<<"Phone: "<<phone<<endl;
}
в мейне создал массив
person *list=new person[size];
size изначально 0... по мере вызова Add увеличивается на 1

проблема возникла когда решил обеспечить возможность изменения внесенной информации...

cout<<"number of position to change: ";
cin>>position;

list[position-1].print();
cin>>name;
cin>>surname;
cin>>b_day;
cin>>phone;
list[position-1].Add(name, surname, b_day, phone);
cout<<"Modified info....";
list[position-1].print();


компилятор ошибки не выдает...но при тестовом выполнении програмы на определеном этапе(при попытке внести изменения получаеться какая-то тарабарщина...) .а на выходе появляется сообщение об ошибке
Expression:_CtrlsValidHeapPointer...
 
К сожалению Вы не привели весь текст Вашей программы. Но судя по имеющемуся, ошибка вероятно в работе с динамической памятью.
Оператор
person* list=new person[size];
при size=0 выделяет блок памяти размером = 0.
Поэтому, вероятно, попытка записи данных в этот блок динамической памяти и вызывает ошибку на этапе выполнения программы.
 
Статус
Закрыто для дальнейших ответов.