Nubzilo: Если строки сильно различаются по длине - можно поискать порог для хэширования, но нужно учитывать размеры блоков хэшей (55 байт для MD5, например).
Nubzilo: Объем файла в байтах какой? Пара гигов, думаю, влезет без проблем. Если больше - хэширование. MD5 со скоростью хэширования в районе 10MH/s дает хэши в 16 байт длиной. То есть 120M строк - 12 секунд хэшировать и около 2G памяти. Грубо говоря :-)
Nubzilo: А, если они гарантированно уникальные в каждом файле - даже не надо проверять перед помещением в контейнер. Читаете построчно файл2, кажду строку помещаете в "контейнер" в памяти. Потом читаете построчно файл1 и проверяете наличие прочитанной строки в "контейнере"
Nubzilo: Читать из файла 2 все строки, добавлять в какой-то контейнер уникальные. Потом читать из файла 1 по строке и проверять что она есть в контейнере.
GavriKos: Кстати :-) Аргумент за 0x00 на системах, когда к нулевому адресу нельзя обращаться: не нужно знать чему равен NULL (отладка, анализ дампов и т.д.). Аргумент за всякие DEADC0DE: видно, что это наша софтина выдала невалидный указатель, а не сторонний код. Если я ничего не путаю, в Delphi что-то подобное сделано...
GavriKos: Расширяя случай МК: может быть ситуация с 4 гигами непрерывной памяти и любой адрес будет валиден :-) Да, линкер (для винды) выделит секцию под все данные, а не по одной на каждую переменную, поэтому и возможно читать из середины float и это валидный указатель и иногда так делать приходится. Нужно учитывать особенности оси: в винде юзермодная программа в принципе не может получить некоторые диапазоны адресов, поэтому в и можно юзать всякие -1 :-)
bobrovskyserg: Адресная арифметика рано или поздно приводит к абсолютным адресам и инструкциям обращения к памяти. И если на этот адрес прав нет - современные ОС кинут исключение. Некоторые системы позволяют обращаться к любому адресу, да.
GavriKos: В винде и в линухе (насколько я помню) в юзермоде обращение у нулевому адресу вызывает исключение. То есть в подавляющем большинстве случаев.
bobrovskyserg: Валидный указатель - только тот, который указывает на выделенную память. Дальше - права на чтение/запись/исполнение, в зависимости от того, что с ним будут делать. Нулевой адрес - не валиден. 0xFFFFFFFF (ака -1) - тоже. И именно поэтому они одинаково вредны или полезны, у кого какая религия.
PavelkoDmitriy: Не знаю :-) Я Питон учил методом полунаучного тыка (благо далеко не первый язык) для простеньких скриптов. В свое время читал "Thinking Python", мне понравилось. И задачки там интересные есть.