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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мусор в памяти 
V
    Опции темы
Wolf1994
Дата 22.3.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Почему при создании одномерного массива int  внутри функции в нём с самого начала присутствует мусор, то есть элементы массива содержат значения отличные от 0?

Есть ли какой-либо способ очистки созданного массива или создания чистого массива?
PM MAIL WWW   Вверх
mes
Дата 22.3.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Код

int mas [1000]= {0};



--------------------
PM MAIL WWW   Вверх
_GRIN_
Дата 22.3.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


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

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



Смотря как ты создаёшь массив int - если он глобальный, то будет забит нулями, если не глобальный, то содержимое памяти (выделенное под массив) не будет обнулено при создании (правило общее для C и для C++)
конкретнее вот пример - скомпиль и проверь:
Код

#include <stdio.h>
int global_array[10]; //данный массив забит нулями (жёсткое правило языка - обязательно для всех компиляторов)
int main()
{
    int local_array[10]; //данный массив (по правилам языка) не обязан быть обнулён - а вот будет обнулён или нет - зависит от компилятора
    for(int i=0;i<10;i++) printf("global_array[%i] = %i; \t local_array[%i] = %i\n",i,global_array[i],i,local_array[i]);
    return 0;
}



--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
zim22
Дата 22.3.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Wolf1994, очистить так:
Код

int a[100] = {0};


Цитата(Wolf1994 @  22.3.2009,  15:49 Найти цитируемый пост)
Почему при создании одномерного массива int  внутри функции в нём с самого начала присутствует мусор

потому что массив объявлен в локальной области видимости, а не в глобальной. А по Стандарту переменные встроенных типов, объявленные в локальной области видимости не инициализируются. В отличии от объявленных в глобальной области видимости.


--------------------
PM MAIL   Вверх
Dmi3ev
Дата 22.3.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



тоже вариант...
Код

int mas[10];
memset(mas, 0, sizeof(mas));



--------------------

PM MAIL   Вверх
Wolf1994
Дата 22.3.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Спасибо за ответы!
PM MAIL WWW   Вверх
ilyuha
Дата 22.3.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(zim22 @  22.3.2009,  16:00 Найти цитируемый пост)
 А по Стандарту переменные встроенных типов, объявленные в локальной области видимости не инициализируются

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

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

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

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

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


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

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


 




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


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

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