реклама на сайте
подробности

 
 
> Двумерный массив строк в C
Freeze Anti
сообщение Feb 10 2009, 11:29
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 153
Регистрация: 29-03-07
Из: Саратов
Пользователь №: 26 613



Здравствуйте.

Суть моего вопроса такова. Мне необходимо создать двумерный массив, состоящий из строк. Потом мне нужно в отдельной функции по необходимости добавлять туда значения. Делаю это так.

Код
static char *MyArray[255][8];

void MyFunc()
{
     char *buffer;
     buffer = calloc(1, 51);
     int x, y;
     /*Здесь есть некоторый код, в котором происходит присваивание переменным x, y, buffer*/
     MyArray[x][y] = buffer;
     free(buffer);
}


Так вот. После того, как я очищаю буфер, значение MyArray[x][y] превращается в мусор. Как бы мне сохранить значение переменной MyArray при выходе из функции?

Сообщение отредактировал Freeze Anti - Feb 10 2009, 11:35


--------------------
!!! All you need is LOVE !!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
A. Fig Lee
сообщение Feb 10 2009, 16:54
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Freeze Anti @ Feb 10 2009, 06:29) *
Суть моего вопроса такова. Мне необходимо создать двумерный массив, состоящий из строк. Потом мне нужно в отдельной функции по необходимости добавлять туда значения. Делаю это так.


нельзя вызывать free(buffer).

У вас есть двухмерный аррей пойнтеров на стринги, сами стринги вы правильно аллокируете - calloc,
освобождать будете в другом месте.
При освобождении проверяйте на NULL - если не NULL - free

кстати, можно пользовать strdup() вместо calloc() i strcpy()
Причина редактирования: Удалено излишнее цитирование.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 15:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016