C++ Linux : Declaring an array in a class causes segmentation fault

标签 c++ linux segmentation-fault

<分区>

我有一个类,当我尝试在头文件中添加以下声明时:

bool m_DeviceIDs[100];

我遇到了段错误。 任何想法为什么? 整个类头:

class Protocol
{
    vector<ProtocolDevice*> _DeviceProtocols;
    vector<Device>* _Devices;
    Helper _Helper;
    vector <unsigned char> m_MessageToSend;//xml messages to send
    bool m_LockDevices;
    //bool m_DeviceIDs[100];
    unsigned int GetVacantID();
public:
    Protocol(void){};
    Protocol(vector<Device>* devices);
    ~Protocol(void);
    void RemoveDevice(int DeviceID);
    void AddDevice(Device device);
    bool SendPing( int DeviceID);
    bool GetInputStatus( int DeviceID);
    void GetLowLevelConfiguration(int DeviceID);
    bool ActivateOutput(char outputID, bool state, int DeviceID);
    bool ActivateBSUHF(unsigned char state, int DeviceID);
    bool ActivateUnitLF(unsigned char state,int DeviceID);
    void StartDeviceListeners();
    void WriteMessageToDevice(int DeviceID, unsigned char* message, int length);
    vector<unsigned char> CollectDataFromDevice(int DeviceID,int dataLength);
    int GetDeviceAvailableDataLength(int DeviceID);
    void RefreshServerDetails(int DeviceID, string host, int port,int reconnectInterval);
    void ReconnectHost(int DeviceID);
    void SendVersion(int,bool);
    void StartListentoDevice(int DeviceID);
    void StopListenToDevice(int DeviceID);
    bool SendSetLowLevelConfiguration(LowLevelConfiguration llConfig, int WaitAckMS,     bool FromBaseToLocator,int DeviceID);
    bool OperateExciterRead(char operation, unsigned int ReaderID, int Retries,int DeviceID);
    bool RequestConfigurationFromLocator(int ReaderID,int TimeOut, int Retries,int DeviceID);
    void SendXMLMessage(unsigned char opcode,   vector<unsigned char> XMLData,unsigned int MessageID, unsigned int SourceID, unsigned int DestID);
    void Mute(int Length, int DeviceID);
};

最佳答案

您显示的代码没有问题,但您可能想尝试 std::bitset而不是 bool 数组,因为它更通用且节省空间,例如:

#include <bitset>
std::bitset<100> m_DeviceIDs;

关于C++ Linux : Declaring an array in a class causes segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20628928/

相关文章:

C fopen 段错误

c++ - 从 boost::multi_index 获取值

c++ - 大型缓冲区与大型静态缓冲区,有优势吗?

linux - 从源代码构建包时如何在 ./configure 或 make 中指定位置?

linux - 使用 shell 脚本读取文件,行的格式已更改

c - 尝试 printf large char[] 时出现段错误

c++ - SQLite 中的段错误

C++ 代码在 g++ 和 vs2008 中得到不同的结果

c++ - 为什么不定义 `__cxa_throw` 会导致链接错误?

linux - 在 Bash 中捕获警报错误