Форум программистов, компьютерный форум, киберфорум
Наши страницы

Что делать с ошибкой: C2440: инициализация: невозможно преобразовать "int **" в "int *" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не перехватывается исключений http://www.cyberforum.ru/cpp-beginners/thread924239.html
int a; try{ cin >> a; cout << a / 0 << endl; }catch(...){ cout << "err" << endl./ }
C++ Обработка исключений. Спецификация Ниже описан код по обработке исключений. Вот какие появились вопросы: 1. Есть ли при обработке исключений автоматическое преобразование типов. Ну например есть только блок catch(long int), а... http://www.cyberforum.ru/cpp-beginners/thread924238.html
binder3 C++
Здорова! Есть задачка: "Напишите связывающий адаптер binder3(), который должен связывать второй и третий аргументы трехаргументной функции для получения унарного предиката. Приведите пример...
Как сделать проверку логина из файла? C++
Как сделать проверку логина из файла? Ну допустим у меня есть такое: #include <iostream> #include <cstdlib> #include <fstream> #include <string> using namespace std;
C++ Можно ли использовать cin.getline для указателя типа char* http://www.cyberforum.ru/cpp-beginners/thread924216.html
Вот к примеру код он работает, но при отладке Ошибка доступа. #include <iostream> using namespace std; struct EXAMPLE{char* pName; char* pAvto; EXAMPLE* next; ...
C++ delete this Добрый день! У меня возник такой вопрос - почему в программе возникает неопределённое поведение для объекта, в деструкторе которого присутствует конструкция delete this? Ведь, по идеи, всё верно -... подробнее

Показать сообщение отдельно
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.07.2013, 00:42
Цитата Сообщение от Аццкий Прогер Посмотреть сообщение
при таком диструкторе происходит утечка памяти
Это я просмотрел. Тут ошибка. Нужно
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
delete[] pArray;
Добавлено через 3 минуты
При таком деструкторе утечки нет.

Добавлено через 7 минут
А для проверки утечек, нужно так сделать:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include<iostream>
#include<conio.h>
using namespace std;
 
template <class T>
class Dynamic_array
{
private:
    int iSize, iStep, iCurInd;
    T * pArray;
    bool Add_Mem(); 
public:
    Dynamic_array() : iSize(2), iStep(2), iCurInd(0), pArray(new T [iSize])
    {
        for( int i = 0; i < iSize; ++i )
            pArray[i] = 0;
    }
    
    ~Dynamic_array()
    {
        delete [] pArray;
    }
    bool Add(T);
    void Show();
};
 
template <class T>
bool Dynamic_array <T> :: Add_Mem()
{
    cout << "\nAdding memory..." << endl;
    T * pTemp = new T [iSize + iStep];
    if (pTemp == 0) return false;
    for( int i = 0; i < (iSize + iStep); ++i )
        pTemp[i] = 0;
    for( int i = 0; i < iSize; ++i )
        pTemp[i] = pArray[i];
    delete [] pArray;
    pArray = pTemp;
    iSize += iStep;
    return true;
}
 
template <class T>
bool Dynamic_array <T> :: Add(T a)
{
    if( iCurInd == iSize ) 
        if (!Add_Mem())
        {
            cout << "Memory allocation error!" << endl;
            return false;
        }
 
    pArray[iCurInd++] = a;
    cout << "Add successful" << endl;
    return true;
}
 
template <class T>
void Dynamic_array <T> :: Show()
{
    for (int i = 0; i < iCurInd; ++i)
        cout << pArray[i] << ' ';
        
}
 
 
int main()
{
    {
    
        Dynamic_array<int> d;
        for (int i = 0; i < 10; ++i)
            d.Add(i);
   
        d.Show(); 
    
    }
    
    if (_CrtDumpMemoryLeaks() != 0)
        cout<< "Oops!" << endl; 
    else cout << "\nNo memory leaks!" << endl;
    _getch();
    cout << endl;
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.