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

Выделение памяти под массив структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Quick sort c++ http://www.cyberforum.ru/cpp-beginners/thread540443.html
Добрый день. Есть вопрос, как можно реализовать Quick sort с подсчётом перестановок. По условию задания у нас есть 10000 элементов. В первый раз сортирует с центра и выводит сколько было перестановок. Во второй раз с конца и выводит сколько было перестановок. В третьи раз с начало и выводит сколько было перестановок.
C++ как отслеживать Http трафик? как отслеживать и парсить траф? Можете обьяснить на словах http://www.cyberforum.ru/cpp-beginners/thread540405.html
C++ Информация о вызванной перегрузке функции
нужно в соответствии с замечанием изменить прилагаемый код : Сделать так, чтоб было видно, какая из перегруженных функций вызывалась. Напрмер функция дополнительно выводмиь строку типа "Результат вызова функции с целыми параметрами". #include <stdio.h> int isNegative(int val); int isNegative(double val); int main() { int a = 0; double b = 0;
C++ В одномерном массиве удалить промежуток элементов от максимального до минимального
В одномерном массиве удалить промежуток элементов от максимального до минимального
C++ Динамический массив http://www.cyberforum.ru/cpp-beginners/thread540391.html
Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать. Добавить строки после каждой четной строки матрицы. #include <conio.h> #include <iostream.h> #include <stdlib.h> int main()
C++ Нужно найти ОШИБКУ в программе УСЛОВИЕ: Дан текст, состоящий не менее чем из пяти слов. Вывести на экран слова, которые имеют одинаковые окончания "ИЯ","ИСТ","ИКА". #include <iostream> #include <string.h> #include <stdio.h> using namespace std; void main () { setlocale(LC_ALL,"rus"); подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
06.04.2012, 13:31  [ТС]     Выделение памяти под массив структур
Добавлю что если заменить memmove на memcpy то ээфекта естественно не будет никакого.
Странно кстати что вот попробовал вручную копировать все-все-все элементы и после такого копирования память удалилась нормально, но это ведь долго будет выполнятся, особенно если у меня десяток тысяч записей будет ...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void CCar::usingCar(CDriver* who, const string& when)
{
    if(m_LogNr==0) //память уже была выделена конструктором для первого элемента
    {
        m_Log[0].m_Driver=who;
        m_Log[0].m_Date=when;
 
        m_LogNr++;
        return;
    }
    //иначе нужно выделить память под массив на 1 больше чем был
 
    TLog* tempLog=new TLog[m_LogNr+1];
 
    for(int i=0;i<m_LogNr;i++)
    {
        tempLog[i].m_Date=m_Log[i].m_Date;
        tempLog[i].m_Driver=m_Log[i].m_Driver;
    }
    delete [] m_Log;
    m_Log=tempLog;
 
    m_Log[m_LogNr].m_Date=when;
    m_Log[m_LogNr].m_Driver=who;
 
    m_LogNr++;
}
Ну и я по прежнему хочу узнать почему здесь realloc не перевыделяет память, malloc выделяет её некорректно, а memove и memcpy лажают?

Добавлено через 5 минут
Код полностью компилируемый, если кто не верит что тот же malloc не справляется с выделением памяти - скопируйте из начала темы код полностью и поменяйте выделение памяти в конструкторе CCar с new на malloc.

Добавлено через 1 минуту
Цитата Сообщение от kazak Посмотреть сообщение
malloc не вызывает конструкторов для объектов.
И ... ? Я же через malloc выделяю память под
C++
1
2
3
4
5
    struct TLog
     {
       string m_Date;//когда
       CDriver* m_Driver;//кто
     };
Это обычная структура, у неё нет конструкторов, а CDriver* это лишь указатель, объект существует и нужно лишь держать в памяти указатель на него.

Добавлено через 36 секунд
Или нужно вызывать как-то конструктор для string?

Добавлено через 9 минут
Или это получается что из-за того что у меня string в структуре я не смогу использовать malloc/realloc потому что не смогу явно вызывать конструктор string ?
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru