LINUX.ORG.RU

[gnu c] как узнать на какой кусок памяти ссылается указатель?


0

0

привет знатокам! вот предположим я объявляю указатель следующим образом:

void *p=malloc(10);

как узнать после на какое количество памяти этот указатель ссылается? для обычных типов(не ссылочных) это можно сделать с помощью sizeof(). а как такое сделать для указателя? не может быть такого что это невозможно узнать! гугл пока не помог.

я хочу в итоге получить функцию вида

int me_sizeof(void*p);


Ответ на: комментарий от dilmah

Я ЗНАЮ ЧТО ИДЕЯ БРЕДОВАЯ, НО ДОВОЛЬНО ИНТЕРЕСНАЯ ДЛЯ МЕНЯ!

мне просто стало интересно определять выделенный размер по указателю. нашли указатель, хопа! и узнали на какой объем памяти он ссылается.

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

а если бы Столман в свое время слушал вопросы «зачем?», думаю вряд ли мы имели бы сейчас столь прекрасный язык! (простите за пафос)

Puld
() автор топика

мне просто стало интересно определять выделенный размер по указателю. нашли указатель, хопа! и узнали на какой объем памяти он ссылается.

Смотри, как работает аллокатор. При чём здесь язык?

mv ★★★★★
()

>мне просто стало интересно определять выделенный размер по указателю. нашли указатель, хопа! и узнали на какой объем памяти он ссылается.

Слушай, а может ты просто gdb хочешь, но сказать не можешь? Там и указатели рассматривать можно, и стек, и память?

anonymous
()

>мне просто стало интересно определять выделенный размер по указателю. нашли указатель, хопа! и узнали на какой объем памяти он ссылается.

по указателю должен лежить объект, который все знает о себе, а не только свой объем памяти

изучи с++ --- вопросы отпадут

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от mv

>> мне просто стало интересно определять выделенный размер по указателю. нашли указатель, хопа! и узнали на какой объем памяти он ссылается.

а если бы Столман в свое время слушал вопросы «зачем?», думаю вряд ли мы имели бы сейчас столь прекрасный язык!


Смотри, как работает аллокатор. При чём здесь язык?



Что интересно - никто не задался вопросом «при чём здесь Столлман»? )))

LamerOk ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>изучи с++ --- вопросы отпадут

позволю себе напомнить что вопрос задан относительно gnu c. никакого c++!

Слушай, а может ты просто gdb хочешь, но сказать не можешь? Там и указатели рассматривать можно, и стек, и память?

нет, мне он не нужен. в NetBeanse все что мне надо вроде есть. а узнать я хочу размер программно. зачем мне это нужно? во-первых, просто интересный вопрос, да и ответа пока никто толком не дал и сам не нашел. Во-вторых относительно размера можно построить какой-нибудь алгоритм для решения какой-нибудь задачи. да хотя бы даже проверку на выделенную память(хотя чувствую сейчас полетят в меня помидоры со стороны некоторых).

а Столлмана я вспомнил потому что мужиг хороший и дело хорошее сделал. не ленина же вспоминать))

ЗЫ многим ученым у виска пальцем вертели, а они нобилевки получили. но это я не о себе))))

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

> да и ответа пока никто толком не дал и сам не нашел.

А что тут сложного? Открываешь исходники менеджера памяти («хипа») в твоей библиотеки языка Си и смотришь на её управляющие структуры. Всё.

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

многим ученым у виска пальцем вертели, а они нобилевки получили

например?

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