Результаты поиска по запросу "dangling-pointer"

7 ответов

Это будет выводить

исал программу на 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 main(void) { int *a = func(); int b; b = func1(); ...

5 ответов

Что такое висячий указатель?

Я знаю, что это довольно распространенный вопрос, но все же новый для меня!Я неЯ не мог понять концепцию висящего указателя, гуглить и писать тестовые методы...

3 ответа

realloc () висячие указатели и неопределенное поведение

Когда вы освобождаете память, что происходит с указателями, которые указывают на эту память? Они становятся недействительными немедленно? Что произойдет, есл...

ТОП публикаций

4 ответа

висячий указатель, причина изменения значения после free ()?

В следующем сегменте кода после

8 ответов

Это «грязный» способ использования адресов памяти. Когда вы возвращаете адрес (указатель), вы не знаете, относится ли он к локальной области действия функции. Это просто адрес. Теперь, когда вы вызвали функцию 'foo', этот адрес (ячейка памяти) для 'a' уже был размещен там в (по крайней мере, пока безопасно) адресуемой памяти вашего приложения (процесса). После того, как функция 'foo' вернулась, адрес 'a' может считаться 'грязным', но он там, не очищен и не нарушен / не изменен выражениями в другой части программы (по крайней мере, в этом конкретном случае). Компилятор C / C ++ не останавливает вас от такого «грязного» доступа (хотя может вас предупредить, если вам не все равно). Вы можете безопасно использовать (обновлять) любую область памяти, которая находится в сегменте данных экземпляра вашей программы (процесса), если вы не защищаете адрес каким-либо способом.

я есть следующий код. #include <iostream> int * foo() { int a = 5; return &a; } int main() { int* p = foo(); std::cout << *p; *p = 8; std::cout << *p; }И код просто выполняется без исключений времени выполнения! Выход был58 Как это может быть? ...

3 ответа

@BenVoigt Да, "мог" подходит здесь лучше, статический член все еще член

возник вопрос о том, почему это работает, когда указатель повис. Ответы были, что это UB, что означает, что это может работать или нет. Я узнал из учебника, что: #include <iostream> struct Foo { int member; void function() { std::cout ...

5 ответов

В чем разница между удалением указателя и установкой его в nullptr? [Дубликат]

На этот вопрос уже есть ответ: удалить против NULL против свободного в c ++ [/questions/2910587/delete-vs-null-vs-free-in-c] 6 ответовГоворитdelete pointer а такжеpointer = nullptr то же самое? Вероятно, нет, но освобождает ли последний память? ...

6 ответов

Почему нет безопасной альтернативы unique_ptr :: operator * ()?

8 ответов

В чем разница между слабой ссылкой и неподтвержденной ссылкой?

Свифт имеет:Сильные СсылкиСлабые ссылкиНеизвестные ссылкиЧем неподходящая ссылка отличается от слабой ссылки?Когда безопасно использовать неизвестную ссылку?...

3 ответа

 библиотека. Это предотвращает нежелательную привязку к временному в одном объявлении, например:

3.9 чрезвычайно многократно использует память, используемую временными.Этот код UB (упрощенный код):