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

Битовые утечки при записи данных на диск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Builtin функции http://www.cyberforum.ru/cpp/thread1755256.html
Погружение в сабж. Компилятор gcc. Имеет ли смысл вообще их изучать, какие из них действительно надо знать, ибо полезные? И вообще, как можно относиться к их использованию в коде?
C++ Ищу исходники для игры pinball Всем Доброго времени суток ! Есть-ли у кого нибуть исходники для игры pinball (желательно с комментариями) ? Буду очень благодарен если кто-то скинет ! Добавлено через 33 секунды заранее... http://www.cyberforum.ru/cpp/thread1754811.html
C++ Опрос про чувствительность к регистру
Языки программирования бывают чувствительные (думаю, большинство) и нечувствительные к регистру букв. Для кого-то удобны вторые языки, кто-то со строгим подходом считает, что первые - это канон, а...
C++ Как запустить проект, используя компилятор LLVM?
Собрал под виндой LLVM. Все вроде нормально. либы есть,хидеры есть, бинари есть. Надо, думаю,попробовать с llvm'овскими либами что-нибудь собрать. полез в инет,все сделал по инструкции. Но в...
C++ Найти всевозможные комбинации паролей и сохранить их в блокнот http://www.cyberforum.ru/cpp/thread1753001.html
Нужна помощь, дело такое, поставил на пароль архив, пароль забыл. Но, помню , что пароль состоял из двух основных паролей ( а их всего от 4 до 6, в зависимости от конечных цифр). Методом грубого...
C++ Умножить две квадратные матрицы, используя ассемблерные вставки Зравствуйте! Требуется написать программу умножения двух квадратных матриц используя ассемблерные вставки и сравнить с обычным умножением в C++ (то есть: a * b). Я написал такой код: #include... подробнее

Показать сообщение отдельно
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
10.06.2016, 11:52  [ТС]
vxg, Спасибо огромное. К сожалению делаю это вручную.
1 запуск и 10 выводов бинарника со сравнением сторонней программой (FC) с эталонным файлом.
Затем перезапуск и все по новой. Сейчас подумаю как можно ее сделать в автоматическом режиме.

За два дня отловил три ошибки в памяти. (Если результат изменен именно в памяти, можно вторым проходом делать проверку сразу по памяти, добавлю в код.) С измененным кодом увидел, что чаще именно в памяти хранится неверный результат (отличный именно в 24-м бите).
Адреса 8-байтовых ячеек:
Код
172DB2928 (16) = 0001 0111 0010 1101 1011 0010 1001 0010 1000 (2)
1729E9928 (16) = 0001 0111 0010 1001 1110 1001 1001 0010 1000 (2)
1875D8928 (16) = 0001 1000 0111 0101 1101 1000 1001 0010 1000 (2)
Немного напрягает совпадение последних 3-х значений адреса. Но по большому счету, в случае постоянной сбойной ячейки число совпадающих значений адреса должно быть больше. Кто уточнит? Там ведь страничная (блочная) адресация?
Сам измененный код:
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
int main()
{
    int n = 1<<30;
    int k = 1<<24;
    int c = 1;
    int a = 0;
    ofstream fbin, ftxt;
    unsigned long long * b = new unsigned long long[n];
    for (int i = 0; i < n; i++)
        b[i]=k+i;
    cout << "Table ready." << endl << hex << "addres table: " << b << dec << endl;
    do
    {
        cout << endl << "Menu:" << endl << "1 - output binary (Data.dat)" << endl << "2 - output text (Data.txt)" << endl;
        cout << "3 - out data of cell (on screen)" << endl << "4 - put data to cell" << endl << "0 - Exit" << endl << "your choise: ";
        cin >> c;
        switch(c)
        {
        case 1:
            fbin.open("Data.dat",ios_base::binary);
            fbin.write(reinterpret_cast<char*>(b),n*sizeof(b[0]));
            fbin.close();
            break;
        case 2:
            ftxt.open("Data.txt");
            for (int i = 0; i < n; i++)
                ftxt << b[i] << endl;
            ftxt.close();
            break;
        case 3:
            cout << "Addres of cell: ";
            cin >> a;
            cout << hex << "Value must be: " << (k+a) << endl << "Value at addr " << a << " (" << (b+a) <<") is: " << b[a] << dec << endl;
            break;
        case 4:
            cout << "Addres of cell for modify: ";
            cin >> a;
            cout << "Old value: " << b[a] << endl << "Enter new value: ";
            cin >> b[a];
            break;
        }
        cout << "Done." << endl;
    } while (c != 0);
    cin.get();
return 0;
}
Toshkarik - Поможет ли ECC память - если результат операции помещаемый в нее изначально неверен? Возможно ли, что она так же сохранит неверный результат?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru