Может я что-то не так понимаю про конструкторы?
Появилась проблема, сначала все было ОК, компилировалось и выполнялось, потом вдруг стало выдавать сегментэйшн фолт.
Результаты отладки в GDB:
int main() {
Openbox::RC rc;
…
—>
Openbox::RC::RC() {
SingleNode* new_node = new Openbox::NumberNode(xml_doc,
«resistance/strength», «resistance to screen border (pixels)»,
11);
—>
Openbox::NumberNode::NumberNode(xmlDocPtr doc, std::string path, std::string desc, int value)
: SingleNode(doc, path, desc), i_value(value) {
—>
Openbox::SingleNode::SingleNode(xmlDocPtr doc, std::string path, std::string desc)
: Node(doc, path, desc) {}
—>
Openbox::Node::Node(xmlDocPtr doc, std::string path, std::string desc)
: xml_doc(doc), str_path(path.c_str()), str_desc(desc.c_str()),
xml_node(find_node(xml_doc)), str_name((const char*) xml_node->name) {}
—>
xmlNodePtr Openbox::Node::find_node(xmlDocPtr doc) {
int sz = str_path.size(); // ! здесь
и вот в этом месте, Segmantation fault
смотрю значение str_path._M_dataplus._M_p
= (char*) 0×69666E6F (Address 0×69666E6F out of bounds)
(отладка в врапере Insight для GDB)
Что не так с [std::string str_path] ?
Это protected член класса Node.
Наследование такое
class Node;
class SingleNode: public Node;
class NumberNode: public SingleNode;
class RC — сам по себе
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
А компилятор какой? Какая стандартная библиотека?
Библиотека
Мне уже подсказали на другом форуме.
Я считал, что переменные инициализируются в том порядке, в каком они указаны в списке инициализации в определении метода, а оказалось, что в том порядке, в каком указаны в описании класса.
в смысле дело не в библиотеке
парни, подскажите пожалуйста, как реализовать в С++ очень большое число (от -10^40 до +10^40) а то очень надо а я только начинаю…
Строкой из 41 character' а. Перегрузишь стандартные операции (+/-/*//) — и все дела.
А вообще, лучше начать новую тему, а не писАть в старые.
Good Luck,
UT