опять ошибка

  • Автор темы AlexSaaa
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

AlexSaaa

пишу программу из учебника...типа примитивной телефонной книги..


создал клас

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...
 
S

shuhobodski

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!