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

 
 
> Двумерный массив строк в 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
Ответов
XVR
сообщение Feb 11 2009, 07:50
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Совет - задать этот вопрос в програмистком форуме (на vingrad например). Из 4х советов, озвученных здесь - 3 неправильные (или провокационные, уж не знаю).
Ваше последнее решение тоже неверное.

Код
     char *buffer;
     buffer = calloc(1, 51); << Нафига здесь динамическая память?
     int x, y;
     /*Здесь есть некоторый код, в котором происходит присваивание переменным x, y, buffer*/
     MyArray[x][y] = calloc(1, sizeof(buffer)); << Выделили буфер, размером в 1 указатель, а нужно - в длинну строки + 1
     strcpy(MyArray[x][y], buffer); << Зафигачили строку в выделенную память и за ее границы, заодно разрушили всю кучу динамической памяти
     free(buffer);


Сообщение отредактировал XVR - Feb 11 2009, 07:51
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Feb 11 2009, 15:03
Сообщение #3


Знающий
****

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



Цитата(XVR @ Feb 11 2009, 02:50) *
Совет - задать этот вопрос в програмистком форуме (на vingrad например).


мы и сюда ходим.


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



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 04:36
Рейтинг@Mail.ru


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