Im triying для компиляции и выполнения этого небольшого кода C++ с использованием g ++ 5.1, он скомпилирован в порядке, когда я его выполняю на linux
. Я получаю это сообщение об ошибке: «Segmentation fault (core dumped)
».C++: ошибка сегментации (core dumped) On linux OS
Но тот же код запуска правильно на OSX, но не на Linux:
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct node {
std::string data;
};
int main() {
struct node * node = (struct node *)
malloc(sizeof(struct node));
node->data.assign("string");
// node->data = "string" --> same issue
return 0;
}
я попытался простой assigne (node-> данные = «строка»), но я получил ту же самую проблему Любая помощь, пожалуйста!
Почему вы используете 'malloc' в коде на C++? 'new' инициализирует строковый объект -' malloc' не делает. –
Кто продолжает преподавать такие вещи? Не случается ли для тех людей, что 80-е годы закончились? :/ –
Чтобы расширить то, что сказал @EdHeal: недостаточно просто выделить байты sizeof (struct node) и затем начать их использовать. Вы должны также убедиться, что конструктор строкового объекта также запущен, так что частное состояние объекта узла будет инициализировано правильно. Для этого вам нужно использовать новый оператор (например, node = struct node * node = new node;) –