Member.h
pragma once
#ifndef MEMBER_H
#define MEMBER_H
#include <iostream>
#include <string>
using namespace std;
class Member {
private:
char* m_id;
char* m_pwd;
char* m_name;
int m_age;
public:
Member();
Member(const char* id, const char* pwd, const char* name, int age);
char* getID();
char* getPWD();
char* getName();
int getAge();
void setID(char* id);
void setPWD(char* pwd);
void setName(char* name);
void setAge(int age);
void printMeminfo();
~Member();
};
#endif
Member.cpp
#include "Member.h"
Member::Member() {
char* m_id = new char;
char* m_pwd = new char;
char* m_name = new char;
int m_age = 0;
};
Member::Member(const char* id, const char* pwd, const char* name, int age) {
int len = strlen(id);
char* m_id = new char[len + 1];
strcpy_s(m_id, len + 1, id);
len = strlen(pwd);
char* m_pwd = new char[len + 1];
strcpy_s(m_pwd, len + 1, pwd);
len = strlen(name);
char* m_name = new char[len + 1];
strcpy_s(m_name, len + 1, name);
int m_age = age;
};
char* Member::getID() { return m_id; }
char* Member::getPWD() { return m_pwd; }
char* Member::getName() { return m_name; }
int Member::getAge() { return m_age; }
void Member::setID(char* id) {
m_id = id;
}
void Member::setPWD(char* pwd) {
m_pwd = pwd;
}
void Member::setName(char* name) {
m_name = name;
}
void Member::setAge(int age) { m_age = age; }
void Member::printMeminfo() {
cout << m_id << ' ' << m_name << ' ' << m_age << endl;
}
Member::~Member() {
delete[] m_id;
delete[] m_pwd;
delete[] m_name;
}
main.cpp
#include "Member.h"
#include <iostream>
#include <string>
using namespace std;
int main() {
Member* mem = new Member[4] {
Member(), Member(), Member(), Member()
};
char infos[4][3][11]{
{"cheol88", "cheol88", "김철수"}, {"ywjeong123", "12345^", "정연우"},
{"Jiwoon456", "34563%", "박지운"}, {"Choi931", "96454$$", "최지우"}
};
int ages[4] = { 23, 31, 35, 26 };
for (int a = 0; a < 4; a++) {
mem[a].setID(infos[a][0]);
mem[a].setPWD(infos[a][1]);
mem[a].setName(infos[a][2]);
mem[a].setAge(ages[a]);
}
char* ID = new char;
char* PW = new char;
while (1) {
cout << "ID looking for : ";
cin >> ID;
cout << "Password of the ID : ";
cin >> PW;
int found = 0;
if ((strcmp(ID, "0000")==0) && (strcmp(PW, "0000")==0)) {
break;
}
for (int i = 0; i < 4; i++) {
if ((strcmp(ID, mem[i].getID())==0) && (strcmp(PW, mem[i].getPWD())==0)) {
mem[0].printMeminfo();
found = 1;
}
}
if (found == 0) {
cout << "Not found" << endl;
}
}
delete[] mem;
delete ID;
delete PW;
return 0;
}
The error I get:
HEAP[Project3.exe]: Invalid address specified to RtlValidateHeap( 000001CB11980000, 00000065390FF843 )
A breakpoint instruction (__debugbreak() statement or a similar call) was executed in Project3.exe.
Please enlighten me I really have no idea
Kept had a research and I guess the problem is related with ‘delete’..
but that’s all..
New contributor
Mei is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.