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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В какой последовательности выполняются действия вычисления ошибки исходя из кода http://www.cyberforum.ru/cpp-beginners/thread1228333.html
// A program to implement a calculator accepting parentheses #include <iostream> // For stream input/output #include <cstdlib> // For the exit() function #include <cctype> // For the isdigit() function #include <cstring> // For the strcpy() function using std::cin; using std::cout; using std::endl;
C++ Ошибки линковки при использовании шаблонного класса Есть заголовочной файл Utils.h, в котором определены 2 класса String и ArrayList<T>: class String : public Comparable<String> { private: friend class Object; string data; public: String() {} /**/ ArrayList<String>* split(const String delimiter) const; http://www.cyberforum.ru/cpp-beginners/thread1228331.html
Использование перегруженного оператора << C++
#include <iostream> #include <conio.h> #include <vector> #include <string> #include <algorithm> using namespace std; class Name_pairs { private:
Клетчатая доска - Определить количество способов добраться до последней клетки N-M C++
Привет. Задача такая: дана клетчатая доска NxM (-1000 <= N,M <= 1000), мы находимся в самой первой клетке 1-1. Нужно определить количество способов добраться до последней клетки N-M. Можно двигаться только вправо и вниз, также на доске существуют препятствия с известными координатами, через них пройти нельзя. Входные данные (Пример): 3 3 - размеры доски 1 - кол-во преград 2 2 - координаты...
C++ Не работает функция sort (vector, vector) http://www.cyberforum.ru/cpp-beginners/thread1228298.html
#include <iostream> #include <conio.h> #include <vector> #include <string> #include <algorithm> using namespace std; class Name_pairs { private:
C++ Написать функцию вычисления произведения отрицательных чисел для трех целых аргументов Написать функцию вычисления произведения отрицательных чисел для трех целых аргументов. Написать операторы вызова функции, с помощью которых определяется и выводится на экран произведение отрицательных чисел для следующих входных данных: a) k, r, y; b) 3, -4, k. подробнее

Показать сообщение отдельно
satisfactor
0 / 0 / 0
Регистрация: 11.01.2010
Сообщений: 51

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

16.07.2014, 22:56. Просмотров 369. Ответов 9
Метки (Все метки)

Доброго времени суток, пишу класс string, на основе которого потом хочу реализовать класс для длинной арифметики. Поэтому мне понадобился такой конструктор:
C++
1
2
3
4
5
6
7
8
9
//  constructor by integer
string::string( const int number, const int base ) {
    char * buffer = (char *)realloc(NULL, sizeof(char)*sizeof(int)+5);
    _itoa(number, buffer, base );
    length = strlen(buffer);
    takeMemory( NULL, length );
    memcpy(data,buffer,length);
    free( buffer );
}
В чем, собственно проблема.
Если в строке "char * buffer = (char *)realloc(NULL, sizeof(char)*sizeof(int)+5);" вместо 5 ставить что то меньшее, то во время выполнения free( buffer ) получаю сообщение о возможном повреждении кучи. Помогите понять причину происходящего, почему именно 5?


Программа-тестер:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using std::endl;
using std::cout;
using std::cin;
 
#include "string.h"
 
int main ( void ) {
    int n = 255;
    string binary( n, 2 );
 
    std::cout << binary;
    
    cin.get(); cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru