|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.06.2009, 14:16 | #1 |
Регистрация: 10.06.2009
Сообщений: 6
|
Вопрос по выделению памяти
Доброго времени суток.
У меня следующий вопрос. В своей курсовой я пишу драйвер Host Port Interface для TSM320C6x... Впрочем не важно Суть в том, что мне нужно выделить память для буффера обмена, причем эту память нужно выделить по определенному адрессу... И я не знаю, как это сделать... Писать и читать я-то могу и так... Но как сделать так, чтоб эта память была зарезервированной? Есть вариант прописать все в Linker Command File... Но мне кажется, что должен быть и механизм выделения памяти по заданному адрессу... Буду рад любому совету. Заранее спасибо. Последний раз редактировалось Tiro; 10.06.2009 в 15:23. |
12.06.2009, 04:23 | #2 | ||
Регистрация: 10.06.2009
Сообщений: 6
|
Мне тут знакомый показал синтаксис оператора new, которого я еще не видел... Написал пару тестовых программок... Впринципе синтаксически все корректно...
Код:
Цитата:
Код:
Но ни читать, ни писать по этому адресу не получилось. Скомпилировалось-то без ошибок. Запустило, и уже в консоли выдало ошибку: Цитата:
Думаю что DSP мне ошибку не выдаст, но в лучшем случае не будет корректно работать или вообще не будет... Протестить к сожалению пока не могу... Но может истина где-то рядом? или может нужно еще что-то добавить? Подскажите плизз... |
||
12.06.2009, 08:18 | #3 |
Заблокирован
Регистрация: 21.11.2008
Сообщений: 4,986
|
Добавь оператор delete на указатель:
Код:
Неудивительно что у тебя ничего не получилось, некоторые компиляторы не видят подобные ошибки... Последний раз редактировалось vasek123; 12.06.2009 в 08:25. |
13.06.2009, 15:16 | #4 | |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Ваш пример корректен. Но, как сказал товарищ vasek123, требуется добавить delete [] pointer1;
Теперь насчет этого: Цитата:
int *ptr = new int[array_size] New работает примерно так: 1. kol = sizeof(int)*array_size; 2. Ищет в памяти свободные, подряд идущие, адреса количеством kol штук. 3. Резервирует их для Вас, и возвращает первый адрес. Вы же пытаетесь заставить new выделить память по заданному адресу. Причем не факт что эти адреса будут свободны. Насколько я знаю, C++ вообще не предоставляет такой возможности (поправьте если не так). Зато подобное действие под силу Ассемблеру. К сожалению, изменение чужих данных может привести к непредвиденным последствиям. Скорее всего, при неправильном изменении памяти, винда вылетит с синим экраном(((
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
|
13.06.2009, 15:40 | #5 |
Регистрация: 10.06.2009
Сообщений: 6
|
Я ж не под винду программирую, а драйвер для системы микроконтроллеов
И там несколько другие условия... Система статическая: то есть в момент компиляции известно, сколько задач будет выполняться, память выделяется 1 раз при старте/ресете... |
13.06.2009, 16:46 | #6 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Тогда прошу прощения (никогда не писал под микроконтроллеры). Но все равно: не думаю что new чем-то вам поможет.
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с выделением динамической памяти malloc (recalloc) | slips | Общие вопросы C/C++ | 6 | 29.04.2009 19:27 |
Вопрос по структурам и динамической памяти. | ROD | Общие вопросы C/C++ | 4 | 12.04.2009 18:20 |
поиск с выделением | photozaz | Компоненты Delphi | 1 | 22.05.2008 15:46 |
ВОПРОС на счет блоков памяти и отслеживание за перемещением потока. | Big Zee | Свободное общение | 7 | 21.04.2008 14:38 |