При доступе к члену структуры типа std::string выскакивала ошибка Bus Error: 10. Код выглядит следующим образом.
#include <iostream>
#include <string>
struct KeyValuePair {
std::string key;
std::string value;
};
struct KeyValuePair *temp = (struct KeyValuePair *) malloc(sizeof(struct KeyValuePair));
int main(void) {
temp->value = "|";
temp->value += "someval|";
std::cout << temp->value << std::endl;
return 0;
}
Запуск gdb в коде показывает следующее в строке temp->value = "|".
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00007fff8d99e524
0x00007fff898dc7ca in std::string::_M_mutate ()
Из приведенного выше сообщения все, что я понимаю, это то, что мой код пытается получить доступ к недопустимой/неавторизованной области памяти.
Мой вопрос: хотя я использовал malloc для получения области памяти для глобальной переменной temp, почему я не могу получить к ней доступ. Что мне не хватает. Пожалуйста помоги.