Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
#1

Выделить память перед strcat - C++

24.02.2014, 01:54. Просмотров 740. Ответов 23
Метки нет (Все метки)

перед выполнением функции strcat() необходимо убедиться, что для переменной выделена память ну или выделено ли достаточно памяти, подскажите как это сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 01:54     Выделить память перед strcat
Посмотрите здесь:

Как выделить память? - C++
Нужно заполнить треугольную матрицу вида 1 1 1 1 1 - 1 - - На элементы с "-" память не должна выделяться. ...

Как выделить память с new? - C++
struct stat *buf; Как для структуры выделить память? Много способов перепробовал, но выдает ошибку. Добавлено через 3...

Нужно выделить память в куче - C++
Работаю с довольно большим объемом данных, записанных матрицей. Для этого нужно выделить память в куче. правильно ли я это делаю: int...

Как выделить память на HEX-е - C++
http://www.cyberforum.ru/attachment.php?attachmentid=578800&stc=1&d=1443205705 ...

выделить память для массива*[] - C++
привет. чего-то не получается организовать работу массива char *c; это динамический массив строк длиной 10 при конструкторе ...

Не могу правильно выделить память - C++
Прошу помощи #include "stdafx.h" #include <stdio.h> #include <math.h> #include <windows.h> #include <memory.h> #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
25.02.2014, 00:10  [ТС]     Выделить память перед strcat #21
Tulosba, нельзя, и на функцию 7 строк
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.02.2014, 11:16     Выделить память перед strcat #22
Fene4ka_, всё таки Вам следовало тему размещать в разделе Си, раз уж стандартные классы нельзя использовать. Ограничивать размер функции кол-вом строк - это глупость (если, конечно речь не идет об удобочитаемости).
Чтобы проверять достаточно ли текущей памяти нужно передавать размер этой памяти. Мне например видится такой результирующий код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// megastring - указатель на результирующую строку
// megalen - текущий размер результирующей строки
// word - добавляемое слово
size_t cat(char** megastring, size_t megalen, const char* word)
{
    size_t wlen = strlen(word) + 1;
    if ( megalen < wlen ) // слово не помещается
    {
        char* newmega = realloc(*megastring, wlen); // перевыделяем память
        if( newmega )
        {
            *megastring = newmega;
            megalen = wlen;
        }
        else
        {
            return 0; // Не удалось перевыделить память
        }
    }
    strcat(*megastring, word); // Добавляем слово
    return megalen; // Новая длина 
}
Fene4ka_
89 / 89 / 16
Регистрация: 24.01.2014
Сообщений: 1,215
26.02.2014, 00:38  [ТС]     Выделить память перед strcat #23
Tulosba, если бы можно было больше строк или добавлять другие переменные, я бы сюда не писал ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 11:54     Выделить память перед strcat
Еще ссылки по теме:

Выделить память под переменную - C++
объявляет переменные и выделяет память под них как в с++ ?? обьявить переменную и выделить ей память?

Выделить память для трёхмерного массива - C++
Пожалуйста помогите! нужно решить 4 задания, но у меня совершенно нет времени! срочно нужно ехать к девушке...надеюсь на ваше понимание и...

Указатели: выделить память размером n байт - C++
Мне нужно выделить память размером n байт, но почемуто указатель на эту память всегда размером в 4 байта. char *a = new char; ...

Как выделить память для класса - C++
Привет, я пишу библиотеку управления памятью. На данный момент я выделяю память вот так void * __cdecl MyAlloc(size_t size) { void *...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.02.2014, 11:54     Выделить память перед strcat #24
Fene4ka_, попробуйте сохранять размер выделенной памяти в первых байтах блока, будет нечто паскалевских строк.
Почитайте еще вот эту тему: Как можно узнать размер выделенной динамической памяти, на которую ссылается указатель a?
Yandex
Объявления
26.02.2014, 11:54     Выделить память перед strcat
Ответ Создать тему
Опции темы

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