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

ошибка с free - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод бисекции и золотого сечения http://www.cyberforum.ru/cpp-beginners/thread405248.html
Люди, можете помочь, нужно прог. написать чтобы выщитывал Общий метод бисекции и метод золотого сечения, я просто не особо понимаю, как и что написать... заранее спасибо
C++ лабораторная по С++ Задача 1. Пользователь вводит 4-х разрядное число. Вывести всевозможные 4-х разрядные комбинации из цифр этого числа. Цифры могут повторяться. Без массива! Задача 2. Пользователь вводит число А не более 4-х разрядов. Вывести всевозможные комбинации из цифр этого числа длиной числа А. Цифры могут повторяться. Без массива! http://www.cyberforum.ru/cpp-beginners/thread405242.html
вопрос по реализации ассоциативного контейнера C++
здравствуйте. есть задание по курсовой: Реализовать класс ассоциативного контейнера, хранящий пары элементов «ключ-значение». Ключи хранить в сбалансированном двоичном дереве поиска. Предусмотреть в нем функции добавления и удаления пар элементов, а также операции поиска по ключу. вопрос следующий: мне не совсем понятно как должно быть реализовано обращение к элементам контейнера. как...
Написать программу с реализацией в виде функции C++
Написать функцию Arctg1(x, eps) вещественного типа (параметры x, eps — вещественные, |x| < 1, eps > 0), находящую приближенное значение функции arctg(x), где arctg(x) = x – x3 / 3 + x5 / 5 – ... + (–1)n x2n+1 / (2n+1) + ... В сумме учитывать все слагаемые, большие по модулю eps.
C++ Помогите доделать задачу на однородный массив http://www.cyberforum.ru/cpp-beginners/thread405220.html
#include <iostream.h> int main() { int mas={-2,3,4,1,6,-5,2,-1,9,5}; int min,f,i,n,j,v; cout<<"elementbI massiva: "; for (i=0;i<10;i++) cout<<mas<<" "; cout<<endl;
C++ Сумма элементов матрицы,стоящих в четных столбцах и нечетных строках. На C++. Помогите,пожалуйста написать программу на C++. написать программу получения суммы элементов матрицы А(m*n),стоящих в четных столбцах и нечетных строках. подробнее

Показать сообщение отдельно
Anamaron
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 3
12.12.2011, 14:48     ошибка с free
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <iostream>
#include <conio.h>
#include <math.h>
#include "head.h"
#include <stdlib.h>
#include <crtdbg.h>
using namespace std;
int asccode(char z)
{
    int a;
    a=(int)z;
    return(a);
}
char frominttochar(int s)
{
    char t = 0;
    if (s>=0 && s<10)
    {
        t=s+48;
    }
    if(s>=10 && s<36)
    {
        t=s+55;
    }
    return(t);
}
char* fromAnytoAny (char*&C,int b,int n)
{
    int length = strlen(C);
    int y=0;
    int code;
    int j;
    int razr;
    for (j=0; j<length; j++)
    {
 
        razr=(int)pow((float)b,(float)(length-j-1));
        code=asccode(C[j]);
        if (code>=48 && code <=57)
        {
            y=y+((code-48)*razr);
        }
        if (code>=65 && code <=90)
        {
            y=y+((code-55)*razr);
        }
    }
    int m=(int)((log((double)y)/log((double)n)))+1;
    int*A=(int*)malloc((m)*sizeof(int));
    int i;
    for(i=0; i<=m-1; i++)
    {   
        A[i]=y%n;
        y=(y-y%n)/n;
    }
    for (i=0; i<=m;i++) {   
    C[m-i-1]=frominttochar(A[m-i]);
    C[0]=0;
    }
    return C;
}
 
 
 
int correct_int_input()
{
    bool t=true;
    int x;
    while (t == true )
    {
        cin>>x;
        t=cin.fail();   
        if (t== true)
        {
            cout<<"doljen bit' int!"<<endl;
            cin.clear();
            _flushall();
        }
 
    }
return(x);
}
 
char* input(int b){
    int code=0;
    int j=0;
    bool flag;
    int z=0;
    z=cin.get();
    z=13;
    char*C=(char*)malloc((1)*sizeof(char));
    while (code!=10)
    {
        z = cin.get();
        code=asccode(z);
        if ( (code<48 || code>67-10+b) && (code!=10) )
        {
            cout<<"vvedennii simvol ne yavlyatsya cifroi dannoi sistemi schisleniya"<<endl;
            flag=false;
            break;
        }   
        
        C=(char*) realloc (C ,(j+1)*sizeof(char));
        C[j]=z;
        j=j+1;
    }
    j=j-1;
    C[j]=0;
    return(C);
}
 
int output(char* C){
    cout<<"resultat"<<endl;
    int length=strlen(C);
    for (int i=0; i<=length;i++){
        cout<<(C[length-i-1]);
    }
    cout<<endl;
    cout<<endl;
    return 0;
}
 
void main()
{
    _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    int n,b;
    char z;
    char*C=(char*)malloc((1)*sizeof(char));
    bool flag=true;
    cout<<"vvedite osnovanie nachalnoi sistemi"<<endl;
    b=correct_int_input();
    cout<<"vvedite osnovanie konechnoi sistemi"<<endl;
    n=correct_int_input();
    cout<<"vvedite chislo"<<endl;
    C=input(b);
    C=fromAnytoAny(C,b,n);
    output(C);
    getch();
    free(C);
}
Если убрать free(C), о все прекрасно работает, однако при попытки освобождения памяти, программа виснет, похоже, что где-то неправильно выделяется память?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru