Изменение размера char [x] до char [y] во время выполнения - PullRequest
3 голосов
/ 20 июля 2009

ОК, надеюсь, я правильно объясню. У меня есть структура:

typedef struct _MyData
{
   char Data[256];
   int  Index;
} MyData;

Теперь я столкнулся с проблемой. Большую часть времени MyData.Data работает с 256, но в некоторых случаях мне нужно увеличить количество символов, которые оно может содержать, до разных размеров. Я не могу использовать указатель. Есть ли способ изменить размер данных во время выполнения? Как? Код приветствуется.

Спасибо

EDIT:

Хотя я очень благодарен за все комментарии, комментарии «возможно, попробуйте это ...» или «сделайте это», или «что вы делаете неправильно ...» не помогают. код здесь помощь Пожалуйста, если вы знаете ответ, отправьте код.

и

1 - нельзя использовать указатели. пожалуйста, не пытайтесь понять, почему, я просто не могу 2 - структура вводится в память другой программы. вот почему. без указателей.

извините за грубость, но я задал вопрос здесь, потому что я уже попробовал все разные подходы, которые, как мне казалось, могли бы работать. Опять же, я ищу код. На данный момент меня не интересуют слова "может сработать ..." или "вы обдумали это ..."

еще раз спасибо и мои извинения

РЕДАКТИРОВАТЬ 2

Почему был задан ответ?

Ответы [ 11 ]

0 голосов
/ 20 июля 2009

Я считаю, трюк KIV вполне пригоден. Хотя я бы посоветовал сначала изучить проблему с указателями.

Если вы посмотрите на реализации malloc
( проверьте эту статью IBM, листинг 5: Псевдокод для основного распределителя ),
Когда вы выделяете, менеджер памяти выделяет заголовок элемента управления и
затем освободите место в соответствии с вашим размером.
Это очень похоже на высказывание

typedef struct _MyData
{
   int  size;
   char Data[1]; // we are going to break the array-bound up-to size length
} MyData;

Теперь ваша проблема в том,
Как вы передаете такую ​​(не по размеру?) Структуру этому другому процессу?

Это подводит нас к вопросу,
Как другой процесс определяет размер этих данных?
Я ожидаю, что поле length будет частью сообщения.

Если у вас все это есть, что не так с передачей указателя на другой процесс?
Будет ли другой процесс определять разницу между указателем на структура и что за выделенная память?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...