При достъп до член на структура от тип 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, защо не мога да осъществя достъп до нея. Какво ми липсва. Моля помогнете.