Я пытаюсь присвоить значение определенному индексу в векторе. Я получаю ошибку сегментации при попытке сделать это. Вот мой код:
#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), он работает нормально. Однако я хотел бы иметь возможность напрямую назначать это значение, ссылаясь на индекс.