Ошибка сегмента при присваивании значения вектору в C ++ - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь присвоить значение определенному индексу в векторе. Я получаю ошибку сегментации при попытке сделать это. Вот мой код:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int sp = -1;            // Stack pointer
int pc = 0;             // Program counter
int fpsp = -1;          // Frame pointer stack pointer
vector<int> rstack;     // Runtime Stack
vector<int> fpstack;    // Frame Pointer Stack

int getInt(unsigned char a, unsigned char b, unsigned char c, unsigned char d) {
    int i = (d << 24) | (c << 16) | (b << 8) | a;
    return i;
}

int main(void) {
   // Reading size of file
    FILE * file = fopen("Samples/Ground_Truth/interpreter_input.smp", "r+");
    fseek(file, 0, SEEK_END);
    long int size = ftell(file);
    fclose(file);

    // Reading data to memory array
    file = fopen("Samples/Ground_Truth/interpreter_input.smp", "r+");
    unsigned char * mem = (unsigned char *) malloc(size);
    int bytes_read = fread(mem, sizeof(unsigned char), size, file);
    fclose(file);

    bool halt = 0;
    while(!halt) {
        int i = getInt(mem[pc + 1], mem[pc + 2], mem[pc + 3], mem[pc + 4]);
        rstack[++sp] = i;
        pc += 5;

        halt = 1;
    }
}

При попытке выполнить rstack[++sp] = i; я получаю ошибку сегмента. Тем не менее, если я использую rstack.push_back (i), он работает нормально. Однако я хотел бы иметь возможность напрямую назначать это значение, ссылаясь на индекс.

...