LINUX.ORG.RU

Вопрос по С


0

0

В виндах есть функция _msize для определения размера блока памяти по адресу. Но она вроде как не ANSI и в стандарт POSIX не входит. Вроде выходит, что это примочка только для Windows.

Вопрос: есть ли подобная функция для Linux?

Вопрос не по C а по библиотекам :))

А зачем она тебе?
IMHO если тебе нужна такая функция, то ты пытаешься решить проблему,
которой нет.

asd
()
Ответ на: комментарий от asd

Не важно по чему - по С или по библиотекам - меня интересует такой вопрос: мне нужно по указателю узнать размер блока памяти. Память выделется malloc или calloc (не важно). Есть ли такая функция вообще в Линуксе или нет?

barmasay
() автор топика
Ответ на: комментарий от barmasay

Тебе сначала надо купить умную книжку по программированию, и почитать. Тогда поймёшь, что только или очень безграмотному, или сильно больному на голову человеку могла потребоваться такая гадость.

Antichrist
()

антихрист во многом прав, стоит подумать, а на самом деле оно тебе надо ? если-же надо, что странно, то можно переdefine'ить свои malloc и вперед :) или, еще лучше, LD_PRELOAD вещь

anonymous
()
Ответ на: комментарий от anonymous

Да не хрена он не прав: человек задал конкретный вопрос, а вы его жизни учите по полной.

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

Но эсли это уже готовый софт, а он его назначенный вчера мантайнер, и ему нужно откровенно сговнякать заплатку, т.к. на все про все есть всего три часа, то ни о каком правильно/неправильно речи идти не может, т.к. по-правильному задача для него - откровенно неподъемная.

proff
()

2proff: ну я и сказал, если есть возможность пересобрать, то можно ебаться с макросами, а если нет, то LD_PRELOAD без вариантов, ты видишь варианты кроме этих? если да, то пость сюда, а так твоя философия ничем не отличается от нашей, разве что ты хочешь сказать, что надо было просто его нахуй послать сказав что никак ни в каком виде нельзя, это по-твоему выход?

anonymous
()

malloc_usable_size ( defined in malloc.h )

omerm
()
Ответ на: комментарий от anonymous

1. если бы я видел варианты - я бы о них написал.
2. философия отличается в том, что необходимо уважать мнение других людей, пусть оно даже заведомо неправильное из-за недостатка опыта/знаний или по другим причинам.

proff
()
Ответ на: комментарий от proff

Уважая неправильные мнения далеко не уедешь. Прикинь, что было бы, если бы в науке не чмырили бы за ошибки? Правильно - не было бы никакой науки. На паровозах бы сейчас катались...

Antichrist
()
Ответ на: комментарий от Antichrist

Антихрест, вы ты не прав!!!

Знать размер аллоцированного блока иногда очень даже полезно. 
Много разных интересных техник дебуггинга на данном знании 
основано.

К примеру: пре-инициализация блока, для поиска бугов типа 
оут-оф-боундс.

Посему, позвольте, уважаемый какадемик, отчмырить Вас за ошибку.

АХ>> только или очень безграмотному, или сильно больному на голову 
АХ >> человеку могла потребоваться такая гадость

Нет, уважемый. Мне, хорошему, грамотному и здоровому такие 
техники тоже требуются иногда. Время от времени. Посему вывод -
доказательство завершено нахождением неверного.

А вас, Антихрест, - надо разжаловать из брандмейстера в простые 
топорники. Вон читать "Writing Solid Code"....

omerm
()
Ответ на: комментарий от omerm

Естественно, это полезно. Но только если ты сам делаешь свои обёртки вокруг всяких там malloc-ов. Я, кстати, этим делом ВСЕГДА пользуюсь, когда вынужден на Цэ программить, у меня на то свой malloc-дебаггер имеется. Однако, в данном случае человек явно не желал писать свою обёртку, а хотел заставить работать код, который на такое дело закладывается - при чём, явно не в дебажьих целях.

ЗЫ: на мой malloc-дебаггер можно поглядеть в коде backstab, к примеру. http://backstab.sourceforge.net/

Antichrist
()
Ответ на: комментарий от Antichrist

сдается мне, что это мнение человека, не совсем сработавшегося в коллективе: с таким отношением к мнению других коллег ничего хорошего не спроектируешь.

с таким отношением - оптимальным является решение сидеть дома и писать shareware в одиночку.

вполне похвально конечно, но это не коллективная работа, а когда нет конструктивной критики, движение вперед снисходит до движения в сторону.

proff
()
Ответ на: комментарий от Antichrist

Почему же не в дебажьих целях? Данное предположение приводит к 
потере общности.

Почему же не предположить что чел писал свои обертки под Виндоус,
а потом решил портануть их под Линукс? 

Мне данное предположение кажется наиболее приемлемым. В отличие 
от предположения что чел не знаком с маллок-ом и прочими функциями 
работы с памятью. И вот почему.

Преподавать основы философии/программирования - занятие тяжкое и 
неблагодарное. А указать эй-пи-ай - занятие легкое и благодарное.
Посему, первое предположение ( о здравом уме и многом опыте чела )
приводит к минимальным затратам. Посему - данное предположение 
наиболее приемлемо.

Вывод: 

Матчасть учить нада бы, ув. Антихрест.

omerm
()
Ответ на: комментарий от proff

Нет, это мнение диктатора, чьё мнение - закон и обжалованию не подлежит. А как ещё? Только демократии нам в коллективе разработчиков и не хватало. ;)

Antichrist
()
Ответ на: комментарий от omerm

Всё просто - в отрыве от информации о месте, где память выделенна, и т.п., информация о размере блока смысла для дебага не имеет, а не для дебага такое уж точно даром не нужно. То есть, либо обёртки есть, и по назначению используются, либо кто-то размер блока юзает совершенно не по назначению, и такую поганую софтину необходимо удавить и написать с нуля.

Отсюда и рекомендация - забить на такие нелепые потребности, и написать свою обёртку заново.

Antichrist
()
Ответ на: комментарий от Antichrist

> в отрыве от информации о месте, где память выделенна, и т.п., информация о
> размере блока смысла для дебага не имеет
Wow!
Ты, ненавидяший C++, словно по учебнику ООП проповедуешь инкапсуляцию!

Die-Hard ★★★★★
()

2Die-Hard: он не со зла :) он на самом деле обширно пользует ООП, но вот на концепцию класса у него аллергия, он пользует/проповедует модули :)

хотя хрен редьки имхо ненамного слаще, хотя

"ненужные вам фичи не должны вам мешать решать свою задачу"/Страуструп, вольный перевод :)

anonymous
()
Ответ на: комментарий от Antichrist

и ты, ув. Антихрист, хочешь сказать, что ты знаешь стоящих программеров, спокойно переносящих диктат?

сдается мне, что ответ "знаю" в данном контексте равнозначен ответу "расписываюсь в том, что проектирую в одиночку, т.к. все остальные - тупые и безмозглые топтатели кнопок"; а если это так, то разговор вести дальше не имеет никакого смысла. ;-)

proff
()

Спасибо всем кто дал ответ - любой (вежливый или грубый). Отдельное спасибо omem - просто и со вкусом просто указал что и где. Кстати, он угадал - я действительно переписываю несколько классов с Win32 на Linux-платформу. Имеется набор методов, который я менять не могу, но результат получить нужно, причем без ошибок вроде переполнения буфера и выход за пределы массива. Опыт программирования в Linux у меня пока маловат, так что предпочитаю сначала спросить у тех кто знает (для чего этот форум вроде как и предназначен).

Если есть желание продолжить дискуссию, то barmasay@mail.ru

barmasay
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.