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

memory can't be 'written' - C++

Восстановить пароль Регистрация
 
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
28.10.2012, 22:29     memory can't be 'written' #1
Помогите найти ошибку. При компиле ничего не выскакивает. Когда запускаю программу - ошибка.
Программа-переводчик из двоичной системы счисления в десятичную.

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
#include <iostream>
#include <list>
 
using namespace std;
typedef list<int> _List;
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
 
    char* symbol = "";
    int result = 0, cnt = 0;
    _List SymbolsList;
 
    cout << "Введите число.\n";
    do
    {
// TODO: make check
//      if (symbol < "0" || symbol > "1")
//          continue;
        
        cin.get(*symbol);
 
        SymbolsList.push_back(atoi(symbol));
        ++cnt;
    }
    while (symbol != "\n");
 
    system("cls"); 
 
    for(_List::iterator i = SymbolsList.begin(); i != SymbolsList.end(); i++)
        if (!SymbolsList.empty())
            result += (int(*i) * pow(double(2), cnt--));
 
    cout << result;
 
    system("pause >> NULL");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2012, 22:29     memory can't be 'written'
Посмотрите здесь:

Память не может быть "written" C++
C++ Out of memory
C++ Memory Bomb
C++ memory leaks | Деструктор
Unable to read memory C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.10.2012, 22:34     memory can't be 'written' #2
C++
1
char* symbol = "";
замените на
C++
1
char symbol;
или
C++
1
int symbol;
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
28.10.2012, 22:41  [ТС]     memory can't be 'written' #3
В случае, если заменить тип на int, я не смогу считать каждый вводимый символ "cin.get(symbol)"
В случае использования типа char невозможно использовать atoi, что приводит к некорректному вычислению.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
28.10.2012, 22:42     memory can't be 'written' #4
C++
1
2
3
char symbol;
//...
atoi(&symbol);
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
29.10.2012, 00:13     memory can't be 'written' #5
Цитата Сообщение от I.M. Посмотреть сообщение
atoi(&symbol);
Ни в коем случае. atoi ждет нультерминированную строку, выводы делайте сами.

Цитата Сообщение от Afflicted Посмотреть сообщение
В случае использования типа char невозможно использовать atoi
C++
1
SymbolsList.push_back(symbol - '0');
Yandex
Объявления
29.10.2012, 00:13     memory can't be 'written'
Ответ Создать тему
Опции темы

Текущее время: 03:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru