Мм)) Небольшой, такой, вопросец по с++

программирование обучение память ошибка heap

Сразу извиняюсь за столь примитивный вопрос, но шота я запуталсо)) буду благодарен за помощь))
Есть число, заданное массивом char-ов data и int-овым значением point, отвечающим за расположение точки.
И есть функция, которая из этого числа удаляет незначащие нули)
сопсна вот она:

int pre0=0;
for (int i=0; i<strlen(data); i++) // считаем незначащие нули в начале числа
{
if (data[i]=='0') pre0++;
else break;
}
int post0=0;
for (int i=strlen(data)-1; i>=point; i--) // считаем незначащие нули в конце числа
if (data[i]=='0') post0++;
else break;

if (pre0+post0!=0) // если таковые имеюццо
{
// бекапим текущее значение data, исключая незначащие нули
char* tmp = new char[strlen(data)-pre0-post0];
cout << "new length: " << strlen(data)-pre0-post0 << "\n";
int h=0;
for (int i=pre0; i<strlen(data)-post0; i++)
{
tmp[h]=data[i];
h++;
}
tmp[h]=0;
// трём data
delete[] data;
data = new char[strlen(tmp)];
// восстанавливаем data
for (int i=0; i<strlen(data); i++) data[i]=tmp[i];
data[strlen(data)]=0;
delete[] tmp; // (!!!) а вот тут крашиццо heap oO
// грит, что приложение пишет в память после конца heap buffer-а
point=point-pre0;

Сопсна вопрос - где я с памятью накосячил и как сие безобразие пофиксить?)

Примечание:
Сорри)) забыл, забыл про pastebin совсем))
Вот читабельный вариант http://pastebin.com/m1b0bc3b1
Ответы:
Пошаговая отладка - рулез.
если вы под юниксами с его долбаным дидиди, то переопределите operator[] чтобы была проверка диапазонов.


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.