powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / В какой указатель запись будет произведена первой?
16 сообщений из 41, страница 2 из 2
В какой указатель запись будет произведена первой?
    #39881979
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axisПравда, не сказали, откуда это взято. Где в стандарте это написано.
А я, в отличие от, указал, где сказано, что это "значение". В [basic.compound]/3. Прилагаю релевантный скрин
и чему же равно invalid pointer value согласно горячо любимому стандарту?
я тебе открою тайну: документацию далеко не всегда пишет тот же, кто каждый день пишет программы, поэтому оставим на совести тех, кто выдумал этот термин и его необъяснимое значение, о котором все столько говорят, но никто его не видел.

Если бы все в стандарте было гладко, то некоторые конференции и доклады не строились на том, что в стандарте полно неточностей и разночтений, другими словами частично стандарт уже не торт:

YouTube Video
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881980
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axisЭто не значит что значение указателя это число.

В подавляющем большинстве современных компьютеров - значит. Исключением являются только
астрально-квантовые компьютеры, существующие исключительно в теоретических в лабораториях
и аналоговые, доживающие свой век на помойках.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881981
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovZ axisне сказали, откуда это взято. Где в стандарте это написано.

Там, где даётся определение понятию "invalid pointe value".
А оно должно где-то даваться? Это базовое понятие.
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881982
Z axis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CerebrumZ axisПравда, не сказали, откуда это взято. Где в стандарте это написано.
А я, в отличие от, указал, где сказано, что это "значение". В [basic.compound]/3. Прилагаю релевантный скрин
и чему же равно invalid pointer value согласно горячо любимому стандарту?Что значит "чему равно"?
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881983
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axisА оно должно где-то даваться?

Да.

Z axisЭто базовое понятие.

Нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881984
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Z axisЧто значит "чему равно"?
как я могу обнаружить что один указатель invalid pointer, а другой, скажем, nullptr или 0x12345678?

Как компилятор должен изменить указатель, чтобы было понятно что он стал invalid, если invalid pointer носит семантику value
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881985
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumкак я могу обнаружить что один указатель invalid pointer, а другой, скажем, nullptr или 0x12345678?

Как компилятор должен изменить указатель, чтобы было понятно что он стал invalid, если invalid pointer носит семантику value
Код, создаваемый компилятором MSVS, после delete сбрасывает значение указателя куда-то в адреса до 2^16, дабы попытка повторного обращения обращение по этому указателю вызывала предсказуемую ошибку... :), но сие, кмк, тоже не особо документировано.
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881986
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёКод, создаваемый компилятором MSVS, после delete сбрасывает значение указателя куда-то в
адреса до 2^16, дабы попытка повторного обращения обращение по этому указателю вызывала
предсказуемую ошибку... :)

А почему не в nullptr? Скорее это выглядит как побочный эффект оптимизации при
использовании регистровых переменных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881988
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovёёёёёКод, создаваемый компилятором MSVS, после delete сбрасывает значение указателя куда-то в
адреса до 2^16, дабы попытка повторного обращения обращение по этому указателю вызывала
предсказуемую ошибку... :)

А почему не в nullptr? Скорее это выглядит как побочный эффект оптимизации при
использовании регистровых переменных.

Может, какое-то волшебное значение?
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881989
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С опциями компиллятора -fsanitize=null -fsanitize=address

Адрес указателя по прежнему не меняется. Но появляется некий дополнительный механизм
контроля в рантайме.

Пока никак не комментирую.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include <stdio.h>

int main()
{
  int* p1 = new int{};
  int* p2 = p1;
  printf("Sizeof pointer = %lu bytes\n", sizeof(p1));
  printf("Physicall value of pointers before 'delete' = %016lx\n", p1);
  delete p1;
  printf("Physicall value of pointers after 'delete' = %016lx\n", p1);
  printf("Trying to de-reference of the pointer. int value = %i\n", *p1);
}



Код: plaintext
1.
$ c++ -fsanitize=null -fsanitize=address probe.cpp -o probe-fsanitize.exe




Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
$ ./probe-fsanitize.exe 
Sizeof pointer = 8 bytes
Physicall value of pointers before 'delete' = 0000602000000010
Physicall value of pointers after 'delete' = 0000602000000010
=================================================================
==17742==ERROR: AddressSanitizer: heap-use-after-free on address 0x602000000010 at pc 0x561f8f39be04 bp 0x7ffda69603f0 sp 0x7ffda69603e0
READ of size 4 at 0x602000000010 thread T0
    #0 0x561f8f39be03 in main (/home/mayton/sql.ru/zakis/probe-fsanitize.exe+0xe03)
    #1 0x7f21a1352b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
    #2 0x561f8f39bc09 in _start (/home/mayton/sql.ru/zakis/probe-fsanitize.exe+0xc09)

0x602000000010 is located 0 bytes inside of 4-byte region [0x602000000010,0x602000000014)
freed by thread T0 here:
    #0 0x7f21a25249d8 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe19d8)
    #1 0x561f8f39bd9c in main (/home/mayton/sql.ru/zakis/probe-fsanitize.exe+0xd9c)
    #2 0x7f21a1352b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

previously allocated by thread T0 here:
    #0 0x7f21a2523458 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xe0458)
    #1 0x561f8f39bcfc in main (/home/mayton/sql.ru/zakis/probe-fsanitize.exe+0xcfc)
    #2 0x7f21a1352b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

SUMMARY: AddressSanitizer: heap-use-after-free (/home/mayton/sql.ru/zakis/probe-fsanitize.exe+0xe03) in main
Shadow bytes around the buggy address:
  0x0c047fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c047fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c047fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c047fff8000: fa fa[fd]fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==17742==ABORTING

...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реакция на де-референс со стороны кода собранного Clang++ (опции -O1 -g -fsanitize=address -fno-omit-frame-pointer)

Тоже самое.
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881993
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОМГ, кто то решил без подготовки читать Стандарт =)
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881994
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли значение стало другим (invalid pointer value)Оно не стало другим, просто то место, куда они указывали, стало невалидным.
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881995
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglавторЕсли значение стало другим (invalid pointer value)Оно не стало другим, просто то место, куда они указывали, стало невалидным.
Уже шестой круг.
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39881997
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День сурка пора закрыть.

Кто за?
...
Рейтинг: 0 / 0
В какой указатель запись будет произведена первой?
    #39882000
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДень сурка пора закрыть.

Кто за?Абсолютно за.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / В какой указатель запись будет произведена первой?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]