I ran into a little problem programming something, I've looked around but I didn't seem to find out the answer.
I'll spare you useless code.
Here are the declarations:
struct one {
    std::string string1, string2;
    bool boolean;
};
struct two {
    std::string string3, string4;
    bool boolean;
};
void function(uint first_parameter, one **first, two **second);
And here is what the main looks like:
int main()
{
    one *passes;
    two *users;
    //...
    passes = new one[size_one]();
    users = new two[size_two]();
    //Filling the arrays...
    std::thread t[PARTS];
    for (int start = 0; start < PARTS; start++)
        t[start] = std::thread(function, first_parameter, &passes, &users);
    for (int i = 0; i < PARTS; i++)
        t[i].join();
}
Whenever I try to access an element of one of my structures (allocated on the free store) in my thread function, (I typically would access it like so: (*first)[0].string1[0]) I do not get the string1 I normally can access in main. Aren't the std::strings located in the free store? 
 
    