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

Шаблонная функция с явной специализацией не возвращает динамический массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ for заменить на while http://www.cyberforum.ru/cpp-beginners/thread397831.html
for( i=0; i<(n-1);i++) { if (a==0 && a==0) zero=true; } как написать используя оператор while(условие)???
C++ Составьте пожалста блок-схему #include <iostream> #include <ctime> #include <vector> #include <algorithm> #include <iterator> int getUnique(const std::vector<int> &vec, int max) { int val; do http://www.cyberforum.ru/cpp-beginners/thread397815.html
[C++] ассемблерный модуль C++
Привет всем. Я вот тут пытаюсь ассемблерную вставку в с++ запихнуть... А не получается. Точнее получается... Но как - то криво. Пишу просто для пробы: ... void printab(int ); int x1; asm("pushl %0\n\tcall printab \n\tpop %%eax" : : "r" (x1)); ...
C++ Как задать динамически массивы ?
Как задать динамически массив? Какой заголовчный файл необходим? Int *B=new A n=100 Заработает ли?
C++ Как в функцыю передать массив http://www.cyberforum.ru/cpp-beginners/thread397801.html
#include "stdafx.h" #include <ctime> #include <iostream> double my(double x ) { int i,j; //Вот сюда }
C++ Все возможные перестановки букв слова - нужен алгоритм Доброго времени суток, форумчане. Помогите пожалуйста найти/составить алгоритм решения следующей задачи: Дано слово. Найти все возможные варианты перестановки его букв. Пример: Дано: abc Вывести: acb abc bac подробнее

Показать сообщение отдельно
Bers
Заблокирован
03.12.2011, 16:46     Шаблонная функция с явной специализацией не возвращает динамический массив
автор!

У тебя в коде присутствуют два момента:

1. Порча памяти (не правильно выделяешь исходную память под свои массивы массивов)
2. Утечка памяти (не правильно освобождаешь память взятую под массивы массивов)

Диагноз: попытка работать с сложно-понимаемыми абстракциями "указатель на указатель" привели мысли в кашу, и породили ошибки.

Лечение: избавиться от указателей на указатели, и работать с более простыми сущностями.

Здесь, я локализировал проблему:
Причем, я не пытался ничего особо исправлять, или как то чистить код.
Все что я сделал - заставил код работать, несмотря ущербность конструкции.
Поэтому в данном коде по прежнему присутствуют утечки памяти

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
template <typename T> 
T *DynMass(T *mas, int n)
{
    T *dynamic = new T [n + 2]; //динамический масив
 
    for (int i = 0; i < n; i++)
    {
        dynamic[i] = mas[i]; 
    }
    dynamic[n] = maximum(mas, n); 
    dynamic[n + 1] = sum(mas, n); 
 
 
    delete [] mas;
 
    return dynamic;
}
 
 
template <> 
char **DynMass<char*>(char **mas, int n)
{
    char **dynamic = new char *[n]; //динамический масив
 
    cout<< "\n-----Dyn-------\n";
    for(int i = 0; i < n; i++)
    {
        dynamic[i] = mas[i];
        
        cout << dynamic[i] << " "; //вывод
    }
 
    //delete [] *mas;
 
    return dynamic;
}
 
void main()
{
    const int nW = 5;//размер массива для фамилий 
    char **words = new char *[nW];
 
    int i=0;
    for( int i=0;i<nW;++i)
    {
        words[i] = new char[nW];
        strcpy(words[i], "1234");
    }
 
    words = DynMass(words, nW); //тут передаю массив в функцию
 
    cout<< "\n-----Word-------\n";
    for( int i=0;i<nW;++i)
    {
        
        cout <<words[i] << " "; //вывод
    }
 
}
 
Текущее время: 19:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru