- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
assert(t1.tm_sec == t2.tm_sec);
assert(t1.tm_min == t2.tm_min);
assert(t1.tm_hour == t2.tm_hour);
assert(t1.tm_mday == t2.tm_mday);
assert(t1.tm_mon == t2.tm_mon);
assert(t1.tm_year == t2.tm_year);
assert(t1.tm_wday == t2.tm_wday);
assert(t1.tm_yday == t2.tm_yday);
assert(t1.tm_isdst == t2.tm_isdst);
TheCalligrapher 16.03.2012 03:08 # +2
niXman 16.03.2012 11:05 # 0
TarasB 16.03.2012 11:21 # +1
А ещё могут быть указатели на одинаковые объекты, но указатели разные.
А ещё memmcmp это кулхацкерство.
niXman 16.03.2012 11:30 # +2
тут речь идет об единственном типе структуры.
а так да, спасибо за экспланацию.
Говногость 16.03.2012 15:48 # +1
Не могу найти где это было...
CBETA 16.03.2012 16:45 # +4
Говногость 01.04.2012 01:51 # 0
3_dar 04.11.2020 12:24 # 0
3_dar 04.11.2020 12:24 # 0
TheCalligrapher 16.03.2012 21:23 # +4
Padding bytes могут присутствовать между полями структуры или в ее конце. Значения этих байтов-заполнителей - непредсказуемы, т.е. они содержат всякий мусор. Когда ты сравниваешь два объекта через 'memcmp', то волей-неволей сравниваешь и эти мусорные байты. Запросто может получиться, что настоящие содержательные поля в двух объектах совпадают, а вот промежуточные байты- заполнители - различаются. В такой ситуации 'memcmp' скажет тебе, что объекты не равны. А они таки равны.
Понятно, что в данно конкретном случае байтов-заполнителей, скорее всего, нет. Но это тем не мнее не повод пользовать 'memcmp' для выполнения такого сравнения.
guest 23.03.2012 19:07 # −4
Говногость 29.03.2012 13:35 # +1
guest6 04.11.2020 12:36 # 0
bormand 04.11.2020 12:38 # 0
З.Ы. Ну с другой стороны там и ассерта нету.
guest6 04.11.2020 12:39 # 0
Тогда memcmp просто не нужен тут
bormand 04.11.2020 12:41 # 0
guest6 04.11.2020 12:42 # 0
bormand 04.11.2020 12:49 # 0
Чтобы дампы чаще и быстрее получались, лол. На самом деле самый главный профит от заполнения.
guest6 04.11.2020 12:53 # 0
bormand 04.11.2020 12:54 # 0
А вот нули плохой паттерн.
guest6 04.11.2020 12:57 # 0
хотя и CC наверное тоже: "случайно" попасть в настоящие данные из такого маленького адрса нельзя, там вроде самый низ адресного пространства обычно специально никуда не мапица?
Или он плохой тем, что его нельзя отличить от от умышленных нулей, пустых строк итд?
bormand 04.11.2020 13:06 # 0
guest6 04.11.2020 13:35 # 0
во даже как)
guest6 04.11.2020 12:26 # 0
Try 01.04.2012 00:25 # −1
assert( t1==t2 );
а если нет - то с memcmp играться не стоит.
guest6 04.11.2020 12:30 # 0
не сравниваются так структуры, к сожалению. В сишечке. В C# вроде бы можно
guest8 09.04.2019 12:50 # −999