現象
`Byte *commandData` 指向 `Byte buffer[10]`,`sizeof(commandData)` 返回 8 (64 位) 或 4 (32 位),而非 10。
原因
`sizeof` 作用於**指針變量本身**,返回指針佔用字節數(地址總線寬度)。數組名 `buffer` 在傳遞給函數/賦值給指針時**退化為指針**,失去長度信息。
正確做法
- **結構體封裝長度**:
`typedef struct { Byte *data; NSUInteger len; } ByteBuffer;` - **Objective-C 使用 `NSData`/`NSMutableData`**:
`@property (copy) NSData *commandData;`
`self.commandData = [NSData dataWithBytes:buffer length:10];` - **C++ 使用 `std::vector` 或 `std::span` (C++20)**。