Проблема инициализации переменной члена STL с Windows API - PullRequest
2 голосов
/ 19 мая 2010

Я создаю приложение для Windows, которое использует вектор строк в качестве переменной-члена. По какой-то причине я могу скомпилировать, но когда он пытается получить доступ к любому из векторов-членов, происходит сбой. ошибка 0xC0000005: расположение чтения нарушения доступа 0xcdcdcdd9. в функции-члена векторного класса.

это функция size (), где она ломается.

size_type capacity() const
{ // return current length of allocated storage
  return (this->_Myend - this->_Myfirst);
}

Я использую Visual Studio 2010.

спасибо Джанго

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Проблема не в коде STL, а в вашем коде.

Поскольку вы не вставляли свой код, я покажу вам пример того, как вы должны использовать вектор строк.

std::vector<std::string> v;
v.push_back("hello");
v.push_back("world!");
//Note the above 2 string literals get implicitly converted to std::string
assert(v.size() == 2);
assert(v[0] == "hello");
0 голосов
/ 19 мая 2010

Я сталкивался с такими вещами раньше. Наиболее вероятная причина - поврежденная куча.

0 голосов
/ 19 мая 2010

в шапке.

#include <iostream>
#include <string>
#include <vector>

using namespace std;


class Chat
{
protected:
    vector<string> m_buffers;

public:
    Chat();
    ~Chat();
};

в cpp

Chat::Chat(){
    string init = "test";
    m_buffers.push_back(init); //crash
}
Chat::~Chat(){

}

извините за отсутствие кода .... что я думаю (лицо ладони)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...