Вы не выделяете перед использованием, вы используете , затем , но также неправильно. Правильное распределение:
str = malloc(sizeof(char*) * n);
Где str
- это массив char*
, , а не - массив char
.
Хорошо, что вы слушаете предупреждения вашего компилятора, но это было действительно конкретным, и вы должны быть в состоянии найти проблему. Порядок распределения очень важен, и «достаточно близко» неприемлемо. Это либо работает, либо это неопределенное поведение.
Я работаю над библиотекой для создания этого максимально простым, но это - все еще альфа-версия.
Можно также попробовать большой глоток. Это - инструмент для генерации интерфейсов к нескольким языкам сценариев от C/C++.
Так как Perl будет обеспечением GUI, я встроил бы код C++ в Perl. Предполагая, что там будет существенным объемом кода C++, я поместил это в библиотеку. Традиционный способ связать ту библиотеку с Perl состоит в том, чтобы создать модуль Perl с помощью XS. Учебное руководство для записи XSUBs и справочника языка XS поможет с этим.
Несколько более легкий путь может состоять в том, чтобы использовать Встроенный модуль. Я использовал Встроенный:: C прежде, и это работало хорошо, но я никогда не пробовал Встроенный:: CPP (версия C++). Я вижу, что это смешало обзоры.
Если бы я занимался этой проблемой, то я использовал бы TCL/TK для создания GUI и затем создал бы расширение TCL в C/C++, который можно назвать от TCL/TK. Это - одна из вещей, что TCL/TK действительно хорош в (другие динамические языки могут сделать это также, но мне нравится TCL/TK). Вы создаете общую библиотеку (.so на Unix или .dll на окнах) с битами C++, и они импортируются как команды в TCL, когда Вы загружаете библиотеку.
Большой глоток, который был уже упомянут, является инструментом, который помогает автоматизировать процесс обертывания, он может взять Ваш код C++ и создать обертку, которая позволяет ему быть загруженным в числовые языки, такие как TCL, Perl, Python, Ruby...
Запустите по http://www.tcl.tk/ для большого количества informtion TCL и TK.
если это - маленький проект, вероятно, не стоящий инвестиций для пребывания в течение большого количества времени, заставляя эти два языка говорить. Вы могли бы рассмотреть использование более соответствующего инструмента. C# будет говорить с C++ с намного меньшим количеством боли.