Windows で動作するコードがありますが、Xcode 3.2.5 C/C++ コンパイラ バージョン GCC 4.2 を使用して MAC に移植すると、クラッシュします。
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 です。
nil 文字列が割り当て行でクラッシュし、MAC でのみクラッシュするのはなぜですか?
ありがとう。