Форум программистов, компьютерный форум CyberForum.ru

Перегрузка new и delete - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сравнение int с элементом enum http://www.cyberforum.ru/cpp-beginners/thread632583.html
Доброго времени суток. У меня возник вопрос следующего содержания: Пишу прогу на Qt, в некоторой части программы необходимо произвести перебор по перечислению: enum SearchParameter { Id, Title, Author, Word,
C++ Определение конца строки Могу ля как то определить, закончилась ли строка через символ \n? Он занимает одну позицию, или две? http://www.cyberforum.ru/cpp-beginners/thread632540.html
Удалить из строки все подстроки C++
Помогите пожалуйста написать функцию удаляющую из строки s все подстроки s1 с испотльзованием <string> Добавлено через 1 минуту void mydelete(string s, string s1) { int r=0; int k=s.find(s1,r); int t=s1.size(); { while(k!=string::npos)
Пределы Int C++
Нужно найти такое максимальное n, чтобы Фиба не выходила за пределы int и вывести его. #include <iostream> using namespace std; int main() { unsigned int f1, f2, fnext, n; f1 = 0; f2 = 1;
C++ Побороть LPCWSTR http://www.cyberforum.ru/cpp-beginners/thread632425.html
Всем привет. Пишу программку на WinApi но столкнулся с простой проблемой. Мне нужно программно вставить текст в Edit. Код примерно такой: TCHAR FullPath = {0}; .......... SetWindowText( GetDlgItem( hwnd, IDC_EDIT1 ), FullPath ); Получаю такую ошибку: .......NNN.cpp(179): error C2664: SetWindowTextW: невозможно преобразовать параметр 2 из "const char " в "LPCWSTR" Типы, на...
C++ Вывод в Файл С++ Добрый день подскажите пожалуйста как вывести данные из программы в файл ексель и сделать чтоб он сохранялся а не каждый раз когда к нему обращалась программа он перезаписывался. Я знаю способ вывода в файл через ofstream но он перезаписывался каждый раз когда я делаю outFile.open() а мне надо сохранить данные. Ну и если не сложно хотелось не в txt а в екселе конечно. подробнее

Показать сообщение отдельно
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
03.08.2012, 17:08     Перегрузка new и delete
Цитата Сообщение от Alberto_Timakov Посмотреть сообщение
что значит
выделение памяти не из кучи, а из пула
В общем случае по new память выделяется из так называемой "кучи" (heap). Т.е. из любого свободного места (это на самом деле не так, для простоты пишу). В случае пула (pool) память будет выделяться из заранее подготовленной области памяти. Что-то на подобие того, что сейчас рассматриваем.

Цитата Сообщение от Alberto_Timakov Посмотреть сообщение
-А можете привести пример как этот запрет реализуется?
Нужно перегрузить операторы new и delete для класса и поместить их в секцию private. Тогда для объектов таких классов создать их с помощью new будет невозможно.
C++
1
2
3
4
5
6
class NotCreateWithNew
{
private:
    static void * operator new (size_t size);
    static void operator delete(void * pObjToDel, size_t size);
};
Цитата Сообщение от Alberto_Timakov Посмотреть сообщение
- Ок. Ну а сама то область все равно остается захваченной? После выполнения программы ее уже освободить нельзя ведьбудет? или как...вот этот момент я как-то совсем не...
Мы выделили память по new и запомнили её в статической переменной:
C++
1
2
3
pObj * newblock = static_cast<pObj*>(::operator new(BLOCK_SIZE * sizeof(pObj)));
//...
headOfFree = &newblock[1];
Когда дело дойдёт до удаления статических переменных (после окончания работы программы), тогда и должен удалиться этот указатель. Если честно, тут для меня тоже не очень ясный момент.

Добавлено через 3 минуты
Цитата Сообщение от Alberto_Timakov Посмотреть сообщение
- так...стоп, я запутался...где мы, один раз, стандартный new вызываем?
C++
1
pObj * newblock = static_cast<pObj*>(::operator new(BLOCK_SIZE * sizeof(pObj)));
Вот тут мы вызываем стандартный new. Это происходит только один раз для 1024 объектов. Потом, когда будет создаваться 1025й объект, снова будет вызван стандартный new.
Тут мы вызываем уже перегруженный new:
C++
1
pObj * p = new pObj;
 
Текущее время: 13:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru