Указатели как параметры
Есть функция и ней объявлен массив символов. Из этой фунции я вызываю другую и передаю ей уазатель на массив.
Второй случай: тот же указатель я передал потоку (CreateThread).
Пямять освобождается при выходе из функции. Т.е. если ты в функции объявляешь массив, передаешь его потоку и функция НЕ БУДЕТ ждать завершения потока - будут проблемы.
Тут лучше самому создать динамический массив а потом не забыть его прибить.
Не прокатит. Адрес в одной программе не имеет смысла в другой. Они обитают в разных адресных пространствах.
Там, вроде, есть какая-то функция, чтобы отмаппить адрес одной программы в пространство другой, но на память я её не назову..
Там, вроде, есть какая-то функция, чтобы отмаппить адрес одной программы в пространство другой, но на память я её не назову..
А если память выделить через GlobalAlloc(), а возвращаемый хэндл передать потоку или послать через SendMessage? А приниматель потом его удалит.
Сложно сказать. Не пробовал, но судя по хелпу - хендл можно транслировать в адрес, так что, похоже, можно.
А если память выделить через GlobalAlloc(), а возвращаемый хэндл передать потоку или послать через SendMessage? А приниматель потом его удалит.
В dos.h есть функция. Например чтобы отправить пусть будет символьную строку.
char str[200],s[100];
//заносиш чтото в str
sprintf(s,"",FP_SEG(str),FP_OFF(str));
Затем перезаёш в другую программу, там выбираеш из строки числа в int (пусть ch1 и ch2)
char *str;
str=(char*)MK_FP(ch1,ch2);
Далее - используй
В DOS проверено, конда через командную строку надо было и структуры и строки большой длинны передать(>256 символов).
В билдере help с примером есть.
Есть функция и ней объявлен массив символов. Из этой фунции я вызываю другую и передаю ей уазатель на массив. Второй случай: тот же указатель я передал потоку (CreateThread). Третий случай: когда я через SendMessage отправляю соседней проге этот бедный указатель. Вопрос: когда удаляться _сами_ массивы, ведь зона видимости в виде финкции закончилась?
Для передачи информации между процессами используй механизмы межпроцессорного взаимодействия (Interprocess Communications):
1) File Mapping,
2) Clipboard,
3) Data Copy (WM_COPYDATA),
4) Mailslots,
5) Pipes,
6) DDE,
7) COM,
8) RPC (LPC),
9) Windows Sockets.