Исходя из ваших комментариев, позвольте мне изменить исходный вопрос ...
Я хочу создать структуру размером 4 КБ (этот размер является обязательным, поэтому я должен соответствовать ему). Проблема заключалась в том, что я не мог изменить значение строковой переменной, содержащейся в структуре, потому что компилятор выдает ошибку сегментации. В настоящее время, если я использую указатель на строку вместо строковой переменной, я теперь знаю, как это сделать (спасибо вам, ребята), однако я прочитал, что способ, которым я использую для выделения 4 КБ памяти (malloc) не самый лучший или подходящий. Если я использую ключевое слово «new», оно динамически распределяет достаточно памяти для структуры и, вероятно, использует другое значение, чем 4 КБ, верно? а это то, чего я не хочу.
У меня все еще есть сомнения относительно того, почему я не мог изменить значение строковой переменной (не указателя), содержащейся в моей структуре (что-то вроде paginas -> dato = "test"). Вероятно, это должно быть следствием использования malloc
Во всяком случае, я был бы очень признателен за советы о том, как выделить 4 КБ памяти.
Исходный код на c ++ выглядит следующим образом:
#define TAM 4000
#define NUMPAGS 512
struct pagina
{
bitset<12> direccion;
char operacion;
char permiso;
string *dato; //I prefer to have a string variable
int numero;
};
void crearPagina(pagina* pag[], int pos, int dir)
{
pagina * paginas = (pagina*)malloc(sizeof(char) * TAM);
paginas -> direccion = bitset<12> (dir);
paginas -> operacion = 'n';
paginas -> permiso = 'n';
string **tempDato = &paginas -> dato;
char *temp = " ";
**tempDato = temp;
paginas -> numero = 0;
pag[pos] = paginas;
}
Заранее спасибо !!!