Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2015, 19:06   #1
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию динамическая память

Всем привет!
вопрос в том, почему динамическая память распределяет не 56 байт а только 4?
Код:
#include <stdio.h>
#include <stdlib.h>
int *create_merge_vector(int vec1[], int vec2[])
{
	int i, j, cnt_vec1 = 0, cnt_vec2 = 0, *ptr = NULL, cnt = 0;
	int min = vec1[0];

	for (i = 0; vec2[i] != -1; i++)
		cnt_vec2++;

	for (j = 0; vec1[j] != -1; j++)
		cnt_vec1++;
	cnt = cnt_vec1 + cnt_vec2 + 1;

	ptr = (int*)malloc(cnt * sizeof(int));

	for (i = 0; vec1[i] != -1; i++, ptr++)
	{
		*ptr = vec1[i];
	}
}
int checkArr(int vec1[], int vec2[])
{
	int i, j, min1 = vec1[0], min2 = vec2[0];
	for (i = 1; vec1[i] != -1; i++)
	{
		if (vec1[i] >= min1)
		{
			continue;
		}
		else
		{
			return 0;
		}

	}
	for (j = 1; vec2[j] != -1; j++)
	{
		if (vec2[i] >= min2)
		{
			continue;
		}
		else
		{
			return 0;
		}
	}
	return 1;
}
void main()
{
	int VEC1[10] = { 2, 4, 6, 8, 9, 12, 14, 56, 64, -1 };
	int VEC2[5] = { 2, 5, 7, 9, -1 };
	int flag;
	int *vec = NULL;
	flag = checkArr(VEC1, VEC2);
	if (flag == 1)
		printf("vectors is OK\n");
	else
		printf("Error\n");
	vec = create_merge_vector(VEC1, VEC2);
}
больше знаю, лучше сплю)
nwhta вне форума Ответить с цитированием
Старый 20.03.2015, 20:00   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>

int *create_merge_vector(int vec1[], int vec2[])
{
    int i, *ptr = NULL, cnt = 1, *tmp;
    for (i = 0; vec1[i] != -1; i++, cnt++);
    for (i = 0; vec2[i] != -1; i++, cnt++);
    printf("%d\n", cnt);
    tmp = ptr = (int*)malloc(cnt * sizeof(int));
    for (i = 0; vec1[i] != -1; i++, tmp++)
        *tmp = vec1[i];
    for (i = 0; vec2[i] != -1; i++, tmp++)
        *tmp = vec2[i];    
    *tmp = -1;
    return ptr;
}

int checkArr(int vec[])
{
    int i, min1 = vec[0];
    for (i = 1; vec[i] != -1; i++)
        if (vec[i] < min1)
            return 0;
    return 1;
}

int main()
{
    int VEC1[] = { 2, 4, 6, 8, 9, 12, 14, 56, 64, -1 };
    int VEC2[] = { 2, 5, 7, 9, -1 };
    int flag;
    int *vec = NULL;
    flag = checkArr(VEC1) && checkArr(VEC2);
    if (flag)
        printf("vectors is OK\n");
    else
        printf("Error\n");
    vec = create_merge_vector(VEC1, VEC2);
    int i;
    for (i = 0; vec[i] != -1; i++)
        printf("%d ", vec[i]);
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 20.03.2015 в 20:04.
BDA на форуме Ответить с цитированием
Старый 20.03.2015, 21:03   #3
nwhta
Форумчанин
 
Регистрация: 30.08.2013
Сообщений: 153
По умолчанию

все супер спасибо, пошел разбирать)
больше знаю, лучше сплю)

Последний раз редактировалось nwhta; 20.03.2015 в 21:06.
nwhta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память. Nickolay0512 Помощь студентам 0 10.12.2013 17:18
Динамическая память orandzheviyman Паскаль, Turbo Pascal, PascalABC.NET 0 03.12.2013 18:35
Динамическая память Ledom Общие вопросы C/C++ 9 26.11.2010 00:07
Динамическая память. Пaвeл Помощь студентам 16 31.05.2009 21:16
Динамическая память liver1981 Общие вопросы C/C++ 5 22.04.2009 09:16