Указатель меняется после вызова функции - PullRequest
0 голосов
/ 04 мая 2018

У меня есть функция, которая добавляет процессы к вектору объекта Process. У меня есть личный член с именем Process * CPU, и моя цель - указать ему первый процесс, который я добавляю в вектор. Я могу продолжать добавлять больше процессов, но процессор все равно должен указывать на первый.

void DiskSched::addProcess() {    
      if (isEmpty()) {
         // If CPU is empty, the new process will automatically go to the CPU
         Process newProcess;
         newProcess.setProcessProperties(0,Header::PID,++Header::TIME);
         CPU = &newProcess; // assigning the first process to the CPU

         cout << endl;
         cout << "Process object: " << newProcess.getPageNum() << " "<< newProcess.getPID() << " " << newProcess.getTimeStamp() << endl;
         cout << "CPU pointer: " << CPU->getPageNum() << " " << CPU->getPID() << " " << CPU->getTimeStamp() << endl;

       }
       else {
        // ....
       }
}

«Указатель процессора» будет таким же, как у объекта Process, потому что он находится в функции, и это то, что я хочу. Я получаю:

0 1 1
0 1 1

У меня есть еще одна функция, которая просто выводит свойства процессора:

void DiskSched::currentCPU() {
   cout << endl;
   cout << "Page #: " << CPU->getPageNum() << endl
        << "PID: " << CPU->getPID() << endl
        << "Timestamp: " << CPU->getTimeStamp() << endl;
}

Когда я вызываю currentCPU, свойства моего указателя процессора не совпадают. Я получаю:

Page #: 1595623976 (should be 0)
PID: 32767 (should be 1)
Timestamp: 1595624103 (should be 1)

Я полагаю, что когда я присваиваю CPU адресу первого объекта в моем векторе, он предназначен только для вызова этой функции и фактически не меняет мой частный указатель CPU. Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...