Вопросы по теме 'dangling-pointer'

Простой и эффективный слабый указатель, который устанавливается в NULL при освобождении целевой памяти.
Есть ли простой и эффективный слабый/защищенный указатель? Мне нужно несколько указателей на один и тот же объект, которые автоматически устанавливаются в NULL при удалении объекта. Существует один «главный» указатель, который всегда используется...
4460 просмотров
schedule 13.02.2023

Вызывается ли деструктор при удалении элемента из контейнера STL?
Скажем, у меня есть два контейнера, в которых хранятся указатели на одни и те же объекты: std::list<Foo*> fooList; std::vector<Foo*> fooVec; Допустим, я удаляю объект из одного из этих контейнеров через один из его методов:...
2815 просмотров
schedule 16.12.2022

Висячий указатель в C
Я написал программу на C с оборванным указателем. #include<stdio.h> int *func(void) { int num; num = 100; return &num; } int func1(void) { int x,y,z; scanf("%d %d",&y,&z); x=y+z; return x; } int...
3557 просмотров
schedule 16.10.2022

С++ висячий указатель/глубокая копия/мелкая путаница с копией
Я слышал, что проблема с оборванным указателем возникает, когда мы назначаем один и тот же адрес двум разным указателям. Это связано с тем, что оба указателя указывают на одно и то же место в памяти, и если память освобождается с использованием...
1737 просмотров

Почему мой висячий указатель не вызывает ошибку сегментации?
Мой код: #include <stdio.h> #include <stdlib.h> int main(void) { int *p = (int *)malloc(sizeof(int)); free(p); *p = 42; return 0; } Я создал указатель, затем указал его на выделенное пространство и, наконец,...
404 просмотров
schedule 27.10.2022

В чем разница между слабой ссылкой и бесхозной ссылкой?
Swift имеет: Сильные ссылки Слабые ссылки Необоснованные ссылки Чем незарегистрированная ссылка отличается от слабой ссылки? Когда безопасно использовать ссылку без владельца? Являются ли несобственные ссылки угрозой безопасности,...
75103 просмотров

Законно ли сравнивать висячие указатели?
Законно ли сравнивать висячие указатели? int *p, *q; { int a; p = &a; } { int b; q = &b; } std::cout << (p == q) << '\n'; Обратите внимание, как p , так и q указывают на объекты, которые уже исчезли....
2561 просмотров

Перемещение семантики в Rust
Я оборачиваю библиотеку C в Rust, и многие из ее функций принимают параметры в виде указателей на структуры, которые сами часто имеют указатели на другие структуры. В интересах сокращения накладных расходов я хотел бы предоставить возможность...
306 просмотров
schedule 27.04.2023

Уточнить висячий указатель в C/C++
Меня немного смущает оборванный указатель в C/C++ void remove(){ Node* curr = new Node(10); Node* pt = curr; delete curr; // do something here // do other thing here } Я предполагаю, что Node* pt все еще висит указатель до того, как...
1555 просмотров
schedule 23.08.2023

Обнаружение или избегание мертвых ссылок на временные во время компиляции
Следующая минималистичная программа дает сбой при компиляции с -O3 и, возможно, с -O2 , но нормально выполняется с -O0 (с clang 4.0): #include <iostream> class A { public: virtual void me() const { std::cerr << "hi!\n"; } };...
256 просмотров

Надежное обеспечение безопасности памяти в C++ 14
Я преобразовываю старый код C++ для использования shared_ptr, unique_ptr и weak_ptr и продолжаю сталкиваться с проблемами проектирования. У меня есть методы «генератора», которые возвращают новые объекты, и методы доступа, которые возвращают...
300 просмотров
schedule 09.12.2022

Это неопределенное поведение в C ++, вызывающее функцию из висячего указателя?
В SO возник вопрос: «Почему это работает?», Когда указатель стал зависать. Ответы были, что это UB, а значит может работать или нет. В учебнике я узнал, что: #include <iostream> struct Foo { int member; void function() {...
294 просмотров

Зумби против нулевого объекта
В цели C мы можем отправить сообщение объекту nil . Объект Zoombie (висячий указатель) - это объект, который указывает на объект, память которого была освобождена, т. е. не указывающий на какое-либо допустимое место в памяти. В этом случае...
184 просмотров

Понимание поведения висячего указателя в этом случае
У меня есть указатель, и по умолчанию он содержит NULL , затем он ждет некоторого события и получает значение, если событие происходит, позже я освобождаю указатель в другом месте но даже после освобождения указателя я не делаю его NULL ,...
112 просмотров
schedule 28.12.2022

Что происходит после удаления ptr C++
Я пытаюсь удалить PTR, используя следующий пример кода: int* data = new int(1); int* p = NULL; p = data; *p = 3; delete p; // Prints 3 cout << *p << endl; //Prints 3 cout << *data << endl; Последние две...
82 просмотров

Является ли UB возвратом указателя на локальную переменную?
Да, я прекрасно знаю, что тебе не следует этого делать. Если у нас есть этот код: int *foo() { int a = 42; return &a; } Как известно большинству кодеров C, это поведение undefined: Использование указателя после free() int *p =...
110 просмотров
schedule 12.06.2022