char s[2 МИЛЛИАРДА] - это еще что такое? Почему не 17 триллионов? Или не 93 дециллиона? Больше, больше бери!
А если серьезно - подумай сам, у тебя программе выделяется 4 гб вирутальной оперативки, из которых некоторое количество занимает винда. А ты делаешь два массива по 2 гигабайта размером в стеке.
Во-вторых - ну ни разу не понимаю, зачем тут вообще преобразование в строку и назад. Можно же просто делить число на 10 пока оно не занулится. А очередную цифру брать как остаток деления на 10.
В-третьих, b[i] = s[i]; N = N + atoi(b); даст не тот результат, который видимо планировался: для числа 12345 будут суммироваться числа 1, 12, 123, 1234, 12345.
Ну и наконец, b не инициализировано. Оно выделяется в стеке, значит в нем мусор, а значит изначально там не пустая строка. То есть на самом деле будут суммироваться числа:
"1куча мусора"
"12уча мусора"
"123ча мусора"
"1234а мусора"
"12345 мусора"
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
|