dmzlj -
dmzlj — 03.01.2010
по мотивам вот этого
и, особенно,
вот этого
VM_WORD beepvm__api_strlen(void *vm, VM_WORD *s)
{
return *s;
}
причем, когда мне надо таскать эту строку между сишным кодом и beepvm --- я просто выделяю чуть больше, и в конец присобачиваю-таки '\x00'. Что бы избежать лишнего копирования-выделения памяти.
Давно хотел разразиться, да все не складывалось. Тот, кто изобрел nul-терминированную строку, постебался над индустрией на десятки лет. Даже круче того чувака (Хоар?) который считает, что это он один изобрел NULL.
Причем, вообще неясно, что послужило причиной такого "дизайна". Экономия чего? Памяти? Много наэкономили, особенно с учетом выравнивания? Избежали ограничения на размер строки? А что, там где экономия лишнего слова / байта на хранение размера существенна, есть столько памяти, что бы хранить строки неограниченных размеров? Да и где строки (именно строки) такого размера имели смысл и для чего? Всегда для больших массивов применялись другие структуры данных. Редко даже строка превышала 256 байт, так что вместо '\x00' можно было бы хранить тупо длину.
Следующий ненависти пост --- про архитектуры, позволяющие доступ к невыровненным данным.
Надёжная внутренняя связь на предприятии: всё о VoIP-шлюзах, IP-телефонах и АТС МиниКом
Про посещение нетуристической Грузии
Листая старые страницы
Иконы стиля 40-ые годы - I
пнд
Месяц заслуженного отдыха
Уникальный взгляд на непростую сферу инноваций (с)
28 ноября ● "День пьяного ежика", "Всемирный день сострадания" и не только...
Про неприятное происшествие на борту авиалайнера рейса Маскат - Москва

