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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
realqwerty
0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 3
#1

динамическое созданный массив и работа sizeof - C++

23.01.2009, 19:38. Просмотров 1547. Ответов 2
Метки нет (Все метки)

создаю массив
потом пытаюсь определить размер массива

C++
1
2
unsigned int *filtr = new unsigned int [kol_vo];
sizeof filtr;
возвращает значение 4, т.е. размер указателя.

пытаюсь заполнить массив нулями:
C++
1
memcpy (filtr, 0, sizeof filtr);
обнуляет только первый элемент, как быть, что не правильно?
применима ли операция sizeof к динамически созданному массиву?
зы: (конечно понятно что размер вроде известен заранее, но...)

можно ли инициализировать вновь созданный массив ( хотябы нулями )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2009, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос динамическое созданный массив и работа sizeof (C++):

Sizeof(.) или constexpr size_t tmp = sizeof(.) - C++
sizeof(...) или constexpr size_t tmp = sizeof(...) Как лучше с точки зрения производительности? правильности?

Работа оператора Sizeof - C++
Каким образом вычисляется размер, допустим, массива int mass ? Где-то в памяти хранится размер, и оператор просто его оттуда вытаскивает,...

Sizeof и Динамический символьный массив! - C++
В первом примере sizeof показывает кол-во элементов в массиве! #include<iostream> #include<cmath> using namespace std; void main() ...

Fwrite (buffer , sizeof(char), sizeof(buffer), pFile) - C++
как записать часть массива чаров? допустим у нас arr; мне надо записать с позиции массива 500 до 600, 100 байтов как записать эту...

Корректно ли удаляется динамически созданный массив? - C++
Собственно, интересует нечто подобное (очень утрированно): int* i1 = new int ; ... заполняется i1 ... int* i2 = i1; i1 = new int...

Передать динамически созданный массив в sprintf - C++
Приветствую. Подскажите, как передать динамически созданный массив в sprintf? Делаю так: int len = parameters.length(); char *s...

2
ISergey
Maniac
Эксперт С++
1391 / 902 / 55
Регистрация: 02.01.2009
Сообщений: 2,695
Записей в блоге: 1
23.01.2009, 20:52 #2
вот пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
template<typename T>
inline int arrlen(T *arr)
{
    return static_cast<int>(_msize(arr)/sizeof(T));
}
int main()
{ 
    int *arr = new int[20];
    int len = arrlen(arr);
    cout<<len<<endl;
    memset(arr,0,sizeof(int)*len);//!sizeof(int)*len
    for(int i = 0; i < len; i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    delete[] arr;
    return 0;
}
0
Lord_Voodoo
Супер-модератор
8594 / 2211 / 61
Регистрация: 07.03.2007
Сообщений: 10,974
Завершенные тесты: 1
23.01.2009, 21:09 #3
Для выделения памяти и инициализации блока 0-ями используй callc:
C++
1
int * mass = (int*) calloc(kol_vo, sizeof(int));
а в вашем случае надо передавать так:
C++
1
memset (filtr, 0, sizeof(int) * kol_vo);
а memcpy для такой операции не используется... у меня билдер даже выпадает от такого использования...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2009, 21:09
Привет! Вот еще темы с ответами:

Шаблонная функция возвращающая созданный динамический массив - C++
Здравствуйте! Нужна Ваша помощь! Нужна шаблонная функция которая возвращает созданный динамический массив, который на 2...

Скопировать элементы большие числа а в другой динамически созданный массив - C++
Организовать ввод динамического массива размером N. Скопировать элементы большие числа а(а вводится пользователем) в другой динамически...

Нужно ли удалять указатель на символьный массив созданный в куче(динамически распределяемой памяти) - C++
Подскажите, программа состоит из 2 функций (main и fun), программа меняет значение указателя на символьный массив созданный в динамически...

sizeof( char * ) & sizeof(char) - C++
Здравствуйте, не могу понять почему sizeof(char *) = 4 а sizeof(char) = 1. Ну с последним ясно , а вот с первым непойму... Может кто-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru