0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 11
1

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

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

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

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

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

можно ли инициализировать вновь созданный массив ( хотябы нулями )
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2009, 19:38
Ответы с готовыми решениями:

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

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

Sizeof и Динамический символьный массив!
В первом примере sizeof показывает кол-во элементов в массиве! #include<iostream> #include<cmath>...

Fwrite (buffer , sizeof(char), sizeof(buffer), pFile)
как записать часть массива чаров? допустим у нас arr; мне надо записать с позиции массива 500 до...

2
Maniac
Эксперт С++
1456 / 957 / 159
Регистрация: 02.01.2009
Сообщений: 2,817
Записей в блоге: 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
Супер-модератор
8766 / 2501 / 142
Регистрация: 07.03.2007
Сообщений: 11,854
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2009, 21:09

Динамическое добавление datagridview в созданный TabPage
Может кто объяснять как создать в tabControl TabPage, а в нем создать datagridview? В TabConrol...

Является ли оператор sizeof синтаксическим сахаром над System.Runtime.InteropServices.Marshal.SizeOf?
Является ли оператор sizeof синтаксическим сахаром над...

Работа sizeof
Здравствуйте. Имеется код: #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; #include &lt;stdio.h&gt; ...

Что обозначает строка вида sizeof(data)/sizeof(data[0])?
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; void bubble_sort(float *data, int size) { int i,j; ...


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

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

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