Have a look at this code: I am trying to read in a number of strings from the console and store them in a dynamic array.
int Doctor::addPatients()
{
string* names = NULL;
int num;
cout << "how many patients are to be added? ";
cin >> num;
numPatients=num;
names = new string[numPatients];
for(int i=0;i++;i<numPatients){
cout << "enter the next patient's name: ";
cin.clear();
cin >> names[i];
}
patients = names; //patients is a private member variable of class Doctor
}
When I execute this code, I get the following error:
malloc: *** error for object 0x10c100898: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
Any help is greatly appreciated
你不初始化整数我
for(int i=0;i++;i<numPatients) // Condition is the second expression in for syntax
Wrong syntax.
for(int i=0;i<numPatients; i++)
What compiler are you using ? You should get a compilation error than a run-time error. Also did you write a copy constructor ? For more info see Rule of Three . To ease the job, use std::vector<std::string>
.
In the for statement, for(int i;i++;i<numPatients)
i
should be initialised to 0 and condition should be the second parameter Correct format should be -
for(int i=0;i<numPatients;i++)
cin
is not good method to get the string input. cin reads only till it sees space character (space,newline,tab..) Alternatively use getline function -
syntax:
getline(cin,names[i])
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.