У меня есть код, который работает в Windows, но теперь, когда я портирую на MAC, с помощью компилятора Ccode C / C ++ версии Xcode 3.2.5 GCC 4.2, происходит сбой.
Я сузил его до вызова memset. Если я закомментирую memset, он будет работать, и если я верну его обратно в код, произойдет сбой.
У меня есть структура, которая выглядит так в моем заголовочном файле:
typedef struct
{
int deviceCount;
struct
{
#define MAX_DEVICE_ID 256
#define MAX_DEVICE_ENTRIES 10
std::string deviceId; // Device name to Open
TransportType eTransportType;
} deviceNodes[MAX_DEVICE_ENTRIES];
} DeviceParams;
Тогда в файле cpp у меня есть это:
DeviceParams Param;
memset(&Param, nil, sizeof(Param));
... позже у меня есть это:
pParam->deviceNodes[index].deviceId = "some string"; // <----- Line that crashes with memset
Как я уже говорил, если убрать вызов memset, все работает нормально. Если я посмотрю на отладчик до вызова memset, мои строки в структуре будут \ 0, а после memset они равны нулю.
Почему происходит сбой строки nil в строке назначения и только в MAC?
Спасибо.