Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка Stack around the variable was corrupted, выбивает ошибку при исполнении программы 
V
    Опции темы
feanor777
Дата 18.5.2014, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 5.4.2014

Репутация: нет
Всего: нет



Здравствуйте!
Во время выполнения кода в (MVS 2010) выбивается такая ошибка
Run-Time check Failure #2 - Stack around the variable 'ar1' was corrupted

Код

#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
const int k=5;

template <typename T> T mas(T ar[])
{
    srand(time(NULL));
    for(int i=0;i<k;i++)
    {
        ar[i]=rand()%5;
        cout<<ar[i]<<" ";
    }
    return 0;
}
template <typename T> T sr_arifm(T ar[])
{
    srand(time(NULL));
    float sum=0;
    ar[k]=mas(ar);
    for(int j=0;j<k;j++)
    {        
        sum+=ar[j];
    }
    cout<<"\nsum = "<<sum;    
    return sum;
}
int main()
{
    float ar1[k];
    cout<<"\nSr arifm = "<<(sr_arifm(ar1))/k<<"\n";
    return 0;
}

Я выяснил в чем проблема - вроде как я где-то вылажу за пределы массива, даже мне кажется нашел проблему в коде 21 строка.

    ar[k]=mas(ar);
 
Но никак не могу найти выход из сложившейся ситуации! Подскажите пожалуйста, как исправить эту ошибку?!

Это сообщение отредактировал(а) feanor777 - 18.5.2014, 22:51
PM MAIL   Вверх
tzirechnoy
Дата 18.5.2014, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Цитата
 ar[k]=mas(ar);


А зачем Вы это делаете? Когда ответите (но только тогда) -- то второй вопрос будет -- почему именно так?
PM MAIL   Вверх
feodorv
Дата 18.5.2014, 23:55 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(feanor777 @  18.5.2014,  23:50 Найти цитируемый пост)
вроде как я где-то вылажу за пределы массива

Не вроде как, а однозначно. Массив рассчитан на 5 элементов, а Вы присваиваете какое-то значение (хотя судя по коду, это всегда ноль) шестому (несуществующему) элементу массива.


Цитата(feanor777 @  18.5.2014,  23:50 Найти цитируемый пост)
Подскажите пожалуйста, как исправить эту ошибку?!

Не присваивайте шестому элементу массива (у него индекс 5) никакого значения. И да, зачем это нужно, остаётся загадкой...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
feanor777
Дата 19.5.2014, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 5.4.2014

Репутация: нет
Всего: нет



Цитата

А зачем Вы это делаете?

Реально блин! )
Как только изменил эту строку на просто mas(ar);
сразу прошли все ошибки.
Цитата

почему именно так?

Цитата

И да, зачем это нужно, остаётся загадкой...

Просто я только начал изучать ф-ции и немного не разобрался.
Я думал, что для того, что бы ф-ция mas отработала свое предназначение(заполнила массив случайными числами), мне нужно присвоить массиву ar[], эту ф-ция, проще говоря написать ar[]=mas(ar). Но MVS не разрешила мне такую запись, подчеркивая её красным, поэтому путем проб и ошибок, я попробовал написать ar[k]=mas(ar) - эту запись компилятор пропустил, да и вроде как программа начала работать правильно, вот только при выполнении выскакивала вон та ошибка.
Вот таким способом все произошло ;)
Теперь же я понял, что для того, что бы эта ф-ция выполняла свое предназначение достаточно просто задать ей в качестве параметра массив и вуаля!
Спасибо за помощь!


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.