![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Командор Норрингтон |
![]()
Сообщение
#1
|
Madman ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 477 Регистрация: 28-August 06 Из: Planet Earth Пользователь №: 4,052 ![]() |
Я на VB6, и Delphi...
А вы на чём? |
![]() ![]() |
Warship |
![]()
Сообщение
#2
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 ![]() |
Нави, спасибо.
![]() Благодаря твоему примеру разобрался и в своем коде. ![]() Оказывается, моя запись Код EXPORT char* SomeTestFunc(const char* _data) { char* retDataPtr; char retData[] = "1234567890"; retDataPtr = &retData[0]; return retDataPtr; } В которой объявлялся массив retData (4 строка), неверная сама по себе. Он почему-то да EXE просто не доживает, хотя вроде и все правильно должен возвращать (указатель на первый элемент) ![]() Нужно было объявлять указателем, как у тебя: Код EXPORT char* SomeTestFunc(const char* _data) { char* retDataPtr; char* retData = "1234567890"; retDataPtr = &retData[0]; return retDataPtr; } Что интересно, если не использовать второй указатель (retDataPtr), то оба варианта работают одинакого хорошо, как этот: Код EXPORT char* SomeTestFunc(const char* _data) { char retData[] = "1234567890"; return retData; } Так и этот: Код EXPORT char* SomeTestFunc(const char* _data) { char* retData = "1234567890"; return retData; } С массивом только лезет предупреждение "warning: address of local variable 'retData' returned". Логику этого момента я так и не понял. Не мог бы ты мне пояснить, из-за чего собственно в моем первом варианте (массив + указатель на первый элемент массива) оно не работает? Вроде-бы записи же эквивалентные. |
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 05:33 |