2 / 0 / 2
Регистрация: 14.10.2018
Сообщений: 55

Как узнать, сколько байтов памяти занимает массив

13.04.2019, 20:07. Показов 12767. Ответов 36

Студворк — интернет-сервис помощи студентам
Я за Си сижу уже.. полчаса..
встала задача: узнать количество памяти, который занимает массив, память к которому я выделяю динамически через calloc()
пробовал sizeof(), но он выводит только "4"..
на данный момент код выглядит так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include<malloc.h>
int main(void)
{
    int Size;
    scanf_s("%d", &Size);
    int *Array;
    Array = (int*)calloc(Size, sizeof(int));
    //Ввод
    for (int i = 0; i < Size; i++)
    {
        printf_s("Array[%d]=", i);
        scanf_s("%d", &Array[i]);
    }
    
    printf("\n \n \n");
    int SizeByte;
    Array = (int*)malloc(3 * sizeof(int));
    printf("%d", sizeof(Array));
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.04.2019, 20:07
Ответы с готовыми решениями:

Как узнать сколько байтов в памяти занимает объект?
Есть ли в Java аналог sizeOf?

Как узнать сколько программа занимает памяти ?
открываю Connect с Access (ADO) по таймеру идет Execute на UPDATE или INSERT это жутко жрет память, может это нормальное явление ?? ...

Как узнать, в процесе отладки, сколько памяти занимает программа?
Вот чтобы проследить за тем сколько и когда программа занимает и какое количество килобайт под капие переменные.... Чтобы увидеть что...

36
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
14.04.2019, 19:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Verevkin Посмотреть сообщение
Напиши себе класс и не морочай дядям головы.
угу. Класс. На Си. Не на С++.
Еще раз. Я не говорю что это существенная проблема. Это особенность языка, обусловленная историей и эффективностью, которую просто надо учитывать.
Цитата Сообщение от ValeryS Посмотреть сообщение
хорошо, вот тебе реализация malloc от Keila для УСБ
и что мне с этим огрызком кода, вырванным из контекста делать? Сам по себе он ничего не доказывает, не опровергает и не демонстрирует.
Цитата Сообщение от ValeryS Посмотреть сообщение
как видишь объем не зависит от запрашиваемого размера
вижу крайне странную функцию. Вроде бы принимает какой-то размер, но игнорирует его. Вроде бы выделяет uint32_t [], но неявно преобразует в void*.
Тем более что в этом коде вообще нет динамического выделения памяти, о котором мы тут говорим.
Цитата Сообщение от ValeryS Посмотреть сообщение
так что претензии типа
ошибки с точкой с запятой после пятерки, из-за которой этот код вообще не соберется.
отметаю
Да на здоровье, тем более что это была не претензия а указание опечатки. "Претензия" была в том, что компилятор ведет себя именно так, как от него ожидалось, а не так, как вы его пытались обмануть.
0
14.04.2019, 19:16

Не по теме:

Отпишусь-ка я отсюда. Некогда срач разводить.

0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
14.04.2019, 23:13
Цитата Сообщение от DimaJoke Посмотреть сообщение
узнать количество памяти, который занимает массив, память к которому я выделяю динамически
Я не знаю насколько это соответствует стандарту языка, насколько это компиляторо-платформо-и т.д.-зависимо, но у меня в VC++ это работает...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
size_t f1( int * ar )
{
    return _msize( ar );
}
 
size_t f2( int * ar )
{
    return ar[-3];
}
 
int main()
{
    int Size, *Array;
 
    printf ( "Size = "   );
    scanf_s( "%d", &Size );
 
    Array = ( int* )calloc( Size, sizeof( int ) );
 
    for( int i = 0; i < Size; i++ )
    {
        printf_s( "Array[%d] = ", i );
        scanf_s ( "%d", &Array[i]   );
    }
 
    printf( "\n_msize   : %u"  , f1( Array ) );
    printf( "\nArray[-3]: %u\n", f2( Array ) ); 
 
    free( Array );
    return 0;
}
Code
1
2
3
4
5
6
7
8
9
10
Size = 6
Array[0] = 9
Array[1] = 8
Array[2] = 7
Array[3] = 4
Array[4] = 5
Array[5] = 6
 
_msize   : 24
Array[-3]: 24
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 00:11
Цитата Сообщение от analogov net Посмотреть сообщение
printf_s
не соответствует. Это опциональное расширение, почти никем не поддерживаемое. Кстати, нормальные printf у вас в коде есть...
Цитата Сообщение от analogov net Посмотреть сообщение
return ar[-3];
не соответствует. Обращение за пределы массива - UB.
Цитата Сообщение от analogov net Посмотреть сообщение
return _msize( ar );
Что это за функция, где объявлена? В stdio.h и stdlib.h ее нет...
Если исправить эти ошибки, получается следующее:
Code
1
2
3
4
5
6
7
8
9
10
11
12
$ gcc main.c
$ ./a.out 
Size = 6
Array[0] = 1
Array[1] = 2
Array[2] = 3
Array[3] = 4
Array[4] = 5
Array[5] = 6
 
_msize   : 940198528
Array[-3]: 0
то есть оно мало того что нестандартное, так еще и не работает
0
 Аватар для analogov net
2532 / 1130 / 495
Регистрация: 17.11.2018
Сообщений: 2,840
15.04.2019, 00:55
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
не соответствует. Это опциональное расширение, почти никем не поддерживаемое
Это из кода ТС.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
не соответствует. Обращение за пределы массива
Это не массив...
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Что это за функция, где объявлена?
Когда-то была в malloc.h, а сейчас не знаю. Возможно там же и осталась.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
то есть оно мало того что нестандартное, так еще и не работает
В VC работает и очень даже неплохо...
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
15.04.2019, 06:44
Цитата Сообщение от Verevkin Посмотреть сообщение
Указатель - это целое без знака. Его размер зависит только от разрядности компилятора и железобетонно равен ей (разрядности), делённой на 8 (бит в байте).
Да ладно? Указатели на разные типы могут иметь разное внутреннее представление (в том числе и размер). То есть, char * и int * могут иметь разный размер. Кстати, формально, в байте CHAR_BIT бит.
1
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 09:45
Цитата Сообщение от analogov net Посмотреть сообщение
Это не массив...
Раз обращаетесь как к массиву, то для функции это массив.
Цитата Сообщение от analogov net Посмотреть сообщение
Когда-то была в malloc.h, а сейчас не знаю. Возможно там же и осталась.
В malloc.h тоже нет. man _msize тоже не может найти. Да и вообще, переменные и функции, начинающиеся с подчеркивания обычно считаются внутрибиблиотечными и не предназначены для конечного пользователя.
Судя по поиску, это очередное майкрософтовское расширение, никак не связанное со стандартом.
Цитата Сообщение от analogov net Посмотреть сообщение
В VC работает и очень даже неплохо...
А толку если оно не работает больше нигде.
Нет уж, нестандартные расширения это нестандартные расширения и полагаться на них нельзя.
Цитата Сообщение от Eanmos Посмотреть сообщение
Указатели на разные типы могут иметь разное внутреннее представление (в том числе и размер). То есть, char * и int * могут иметь разный размер.
Стандарт с вами не согласен.
Цитата Сообщение от 6.3.2.3 Pointers
A pointer to void may be converted to or from a pointer to any object type. A pointer to
any object type may be converted to a pointer to void and back again; the result shall
compare equal to the original pointer.
То есть любой указатель может быть приведен к void*, а void* может быть приведен к любому указателю.
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
15.04.2019, 10:04
COKPOWEHEU, стандарт со мной согласен.

6.2.5 Types

...

28 A pointer to void shall have the same representation and alignment requirements as a
pointer to a character type.48) Similarly, pointers to qualified or unqualified versions of
compatible types shall have the same representation and alignment requirements. All
pointers to structure types shall have the same representation and alignment requirements
as each other. All pointers to union types shall have the same representation and
alignment requirements as each other. Pointers to other types need not have the same
representation or alignment requirements
.
1
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 13:02
Цитата Сообщение от Eanmos Посмотреть сообщение
COKPOWEHEU, стандарт со мной согласен.
я уже привел ссылку что нет, вы ее не опровергли.
Ваша же ссылка скорее об адресации по указателю. Скажем, char *pchar; double *pdouble; имеют разный размер указуемого объекта (representation), что немного меняет арифметику. И разные требования по выравниванию. Но сам указатель остается целым числом одного и того же размера, иначе было бы нельзя было привести одно к другому.

Добавлено через 55 секунд
Впрочем, интереса ради, можете привести пример, когда у указателей на разные типы отличается размер. Хотя бы гипотетически
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
15.04.2019, 14:07
COKPOWEHEU, вы не правы.

Размер указателя на один тип может отличаться от размера указателя на другой тип, хотя бы потому, что области адресное пространство, в котором могут находится указанные сущности могут быть разного размера. Например, указатели на функции могут иметь размер отличный от указателя на данные из-за разницы в размерах секции кода и секции данных.

В той же Гарвардской архитектуре данные и инструкции хранятся отдельно, следовательно, если шина инструкций «больше», чем шина данных, вы получите разный размер указателя на данные и указателя на функции.

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

Вас вводит в заблуждение возможность приведения любого указателя на данные (object type) к void * и наоборот. И не вас одного:

Q: The C standard allows pointers to different types to have different sizes, e.g. sizeof(char*) != sizeof(int*) is permitted. It does, however, require that if a pointer is converted to a void* and then converted back to its original type, it must compare as equal to its original value. Therefore, it follows logically that sizeof(void*) >= sizeof(T*) for all types T, correct?

A: Therefore, it follows logically that sizeof(void*) >= sizeof(T*) for all types T, correct?

That doesn't necessarily follow, since sizeof is about the storage representation, and not all bit-patterns have to be valid values. I think you could write a conformant implementation where sizeof(int*) == 8, sizeof(void*) == 4, but there are no more than 2^32 possible values for an int*. Not sure why you'd want to.
Если вы все еще не убедились, в том что указатели на разные сущности могут иметь разный размер, вот вам цитата из C FAQ:

void *'s are only guaranteed to hold object (i.e. data) pointers; it is not portable to convert a function pointer to type void *. (On some machines, function addresses can be very large, bigger than any data pointers.)
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 15:03
Цитата Сообщение от Eanmos Посмотреть сообщение
it is not portable to convert a function pointer to type void *
Это противоречит процитированному мной пункту стандарта. И это противоречит использованию функций в динамических библиотеках, где они передаются как раз через void*.
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
15.04.2019, 15:44
COKPOWEHEU, боже мой, вы шутите?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Сообщение от 6.3.2.3 Pointers
A pointer to void may be converted to or from a pointer to any object type. A pointer to
any object type may be converted to a pointer to void and back again; the result shall
compare equal to the original pointer.
То есть любой указатель может быть приведен к void*, а void* может быть приведен к любому указателю.
В стандарте четко сказано:
A pointer to void may be converted to or from a pointer to any object type.
Ключевой момент: object type. Указатель на функцию не является указателем на object type, так функция — это не object, а собственно function.

6.2.5 Types

1 The meaning of a value stored in an object or returned by a function is determined by the type of the
expression used to access it. (An identifier declared to be an object is the simplest such expression;
the type is specified in the declaration of the identifier.) Types are partitioned into object types (types
that describe objects) and function types (types that describe functions)
. At various points within a
translation unit an object type may be incomplete (lacking sufficient information to determine the
size of objects of that type) or complete (having sufficient information).
(Полужирное начертание моё.)
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 17:05
Поискал примеры реальных архитектур, где это могло бы встречаться. Не нашел, но упоминания, совпадающие с вашим мнением, проскакивали.
Можете привести пример реальной архитектуры, где размер указателя для разных типов данных отличается?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
15.04.2019, 17:25
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Судя по поиску, это очередное майкрософтовское расширение, никак не связанное со стандартом.
Ага, оно!
В linux есть malloc_usable_size возвращающее количество памяти, реально выделенное malloc & co. Может быть таким же, как запрошенное, или больше.

Цитата Сообщение от Eanmos Посмотреть сообщение
Указатели на разные типы могут иметь разное внутреннее представление (в том числе и размер).
В перый раз слышу. Спорить, конечно, не буду потому, что
There are more things in heaven and earth, Horatio,
Than are dreamt of in your philosophy.
Но как-то на практике не встречалось.
Цитата Сообщение от Eanmos Посмотреть сообщение
Также не стоит забывать, что указатели на платформах с сегментной адресацией имеют деление на «ближние» и «дальние».
Ну разве-что... А оно ещё где-то (кроме DOS и прочих 8- 16-битных анахронизмов) используется?

Цитата Сообщение от Eanmos Посмотреть сообщение
On some machines, function addresses can be very large, bigger than any data pointers.
Ну на некоторых машинах и в байте 10 бит. Однако
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
typedef int (*func)(int, int);
 
int main(void) {
    printf("%zu %zu\n", sizeof(void*), sizeof(func));
    return 0;
}
Code
1
2
$ ./a.out 
8 8
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
15.04.2019, 18:40
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Можете привести пример реальной архитектуры, где размер указателя для разных типов данных отличается?
Are there any platforms where pointers to different types have different sizes?.

Также привожу цитату из другого ответа на enSO:

For example, on Freescale's HCS12 processor which has banked flash, data pointers are all 16 bits.

However, function pointers are 16 bits for near pointers (for code in the same page as the calling function, or in unbanked flash), or 24 bits for far pointers (for code in a different page), incorporating the page number in the address.

— Steve Melnikoff
Цитата Сообщение от easybudda Посмотреть сообщение
Ну на некоторых машинах и в байте 10 бит. Однако
Ну, мы же говорим о гипотетической возможности указателей иметь разный размер. А так да, ситуация несколько экзотическая.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
15.04.2019, 18:59
В таком случае согласен, был не прав.

Не по теме:

Но все равно это экзотика, с которой вряд ли столкнемся!

1
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
29.05.2020, 01:44
Для того чтобы найти размер массива в байтах нужно записать формулу. (У меня 12ая студия стандарт языка с++ 10ый или 11ый шаблоны с неограниченным количеством аргументов у меня не работают).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//for(int q=0;--q>-17;)
//например
char*qq; 
short*qw;
int*qe;
Dt*qr;//(это long long)
 
int **ww=new int*[10];
ww[0]=new int[20];
qr=(Dt*)ww;
cout<<"Результат размера ww через long long 1 "<<*((int*)qr-4)<<endl;
 
for(int q=0;--q>-17;)
cout<<"qr "<<q<<" "<<*((int*)qr+q)<<endl;
 
qq=(char*)ww[0];
cout<<"Результат размера ww[0] через char "<<*((int*)qq-4)<<endl;
qw=(short*)ww[0];
cout<<"Результат размера ww[0] через short "<<*((int*)qw-4)<<endl;
qe=(int*)ww[0];
cout<<"Результат размера ww[0] через int "<<*((int*)qe-4)<<endl;
qr=(Dt*)ww[0];
cout<<"Результат размера ww[0] через Dt "<<*((int*)qr-4)<<endl;
delete[]ww[0];
delete[]ww;
 
cout<<"С простым "<<endl;
int*ee=new int[50];
qq=(char*)ee;
cout<<"Результат размера ee через char "<<*((int*)qq-4)<<endl;
qw=(short*)ee;
cout<<"Результат размера ee через short "<<*((int*)qw-4)<<endl;
qe=(int*)ee;
cout<<"Результат размера ee через int "<<*((int*)qe-4)<<endl;
qr=(Dt*)ee;
cout<<"Результат размера ee через Dt "<<*((int*)qr-4)<<endl;
delete[]ee;
 
char*rr=new char[5000];
qq=(char*)rr;
cout<<"Результат размера rr через char "<<*((unsigned long*)qq-4)<</*" "<<&(qq[-4])<<*/endl;
qw=(short*)rr;
cout<<"Результат размера rr через short "<<*((unsigned long*)qw-4)<</*" "<<&(qw[-4])<<*/endl;
qe=(int*)rr;
cout<<"Результат размера rr через int "<<*((unsigned long*)qe-4)<</*" "<<&(qe[-4])<<*/endl;
qr=(Dt*)rr;
cout<<"Результат размера rr через Dt "<<*((unsigned long*)qr-4)<</*" "<<&(qr[-4])<<*/endl;
delete[]rr;
 
double*tt=new double[30000];
qq=(char*)&tt[0];
cout<<"Результат размера tt через char "<<*((unsigned long*)qq-4)<</*" "<<&(qq[-4])<<*/endl;
qw=(short*)&tt[0];
cout<<"Результат размера tt через short "<<*((unsigned long*)qw-4)<</*" "<<&(qw[-4])<<*/endl;
qe=(int*)&tt[0];
cout<<"Результат размера tt через int "<<*((unsigned long*)qe-4)<</*" "<<&(qe[-4])<<*/endl;
qr=(Dt*)&tt[0];
cout<<"Результат размера tt через Dt "<<*((unsigned long*)qr-4)<</*" "<<&(qr[-4])<<*/endl;
double *yy=(double*)&tt[0];
cout<<"Результат размера yy через Dt "<<*((unsigned long*)yy-4)<</*" "<<&(yy[-4])<<*/endl;
delete[]tt;
Результат(у меня все размеры находятся на индексе -4)
Результат размера ww через long long 1 40
qr -1 -33686019
qr -2 410
qr -3 1
qr -4 40 размер 2умерного массива в байтах
qr -5 0
qr -6 0
qr -7 3334992
qr -8 3334824
qr -9 469818092
qr -10 1903529889
qr -11 0
qr -12 0
qr -13 -22303829
qr -14 -1414812757
qr -15 -1409417731
qr -16 1

Я не знаю почему можно любым указателем на любой позиции его находить но реализация может быть разной на разных
языках программирования и стандартах с

Результат размера ww[0] через char 80 внутри двумерного массива
Результат размера ww[0] через short 80
Результат размера ww[0] через int 80
Результат размера ww[0] через Dt 80
С простым
Результат размера ee через char 200
Результат размера ee через short 200
Результат размера ee через int 200
Результат размера ee через Dt 200
Результат размера rr через char 5000
Результат размера rr через short 5000
Результат размера rr через int 5000
Результат размера rr через Dt 5000
Результат размера tt через char 240000
Результат размера tt через short 240000
Результат размера tt через int 240000
Результат размера tt через Dt 240000
Результат размера yy через Dt 240000

Отсюда следует вывод можно привести указатель к типу Чар и искать ближайшую позицию.

Если объявить в mql4 массив типа
C++
1
double mas[30];
и передать в Сишную библиотеку то результат такой
w[0] 582
w[-1] 0
w[-2] 0
w[-3] 147
w[-4] 0
w[-5] 0
w[-6] 200275480
w[-7] 0
w[-8] 0
w[-9] 0
w[-10] 0
w[-11] 30(количество элементов)
w[-12] 8(тип double )
w[-13] 88
w[-14] 66
w[-15] 183666640
w[-16] 173180496
Единственное что понятно это то что длина поиска не превышала -16. Возможные контрольные значения -32 -64, мне кажется не будет так далеко разве что 128 битных системах но я не знаю бывают ли такие.

Добавлено через 1 час 8 минут
Массив статических массивов не хранится нигде, нужно заранее знать размер указателя, статические массивы намного дешевле обходятся чем динамические.

Добавлено через 1 час 20 минут
В общем понятно. Если создать указатели отдельно и приводить один указатель к другому то будет позиция -4 если потому что размер динамического указателя 4 байта, если использовать собственный указатель то результат такой.
C++
1
2
3
4
char *rt=new char[100];
for(int q=1;--q>-17;)
cout<<q<<" Результат размера rt[0] "<<(int)*(/*(int*)*/(&rt[0])+q)<<endl;
delete[]rt;
В этом случае позиция -16 char, -8 short, -4 int, -2 long long соответственно, если ваш процессор поддерживает 16 байтные переменные то как раз это поле в 16 байт даст -1 что говорит о том что указатель находится в самом начале массива. Ещё тут играет роль приведение типов что я выше закоментировал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.05.2020, 01:44

Как узнать сколько памяти занимает таблица и каждый столбец в таблице
Как узнать сколько памяти занимает таблица и каждый столбец в таблице Access?

Как узнать, сколько памяти занимает тот или иной элемент программы?
Товарищи, подскажите, пожалуйста, ответы на следующие вопросы: 1) Есть какие-либо средства определения, сколько памяти жрёт программа в...

Узнать сколько занимает памяти объект.
Здравствуйте. Кто нибудь в курсе, как можно узнать сколько &quot;весит&quot; экземпляр написанного мной класса? То есть мне нужно создать экземпляр...

Определить, сколько места занимает в динамической памяти массив
Заполнить массив целых чисел случайным образом. Размерность массива не ограничена (в рамках динамической памяти), задается с клавиатуры....

Определить, сколько места занимает в динамической памяти данный массив
Даны квадратная матрица A. Элементы вектора и матрицы задаются случайным образом. Размерность матрицы не ограничена (в рамках динамической...


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

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

Новые блоги и статьи
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru