Code:
#include <iostream>
char* intToCharArray(int val)
{
    int len=0;
    bool neg = false;
    if (val < 0)
    {
        val = -val;
        len = ((int)log10(val)) + 2;
        neg = true;
    }
    else
    {
        len = ((int)log10(val)) + 1;
    }
    char* cons = new char[len+1];
    if (neg)
    {
        cons[0] = '-';
        for (int i = 1; i <= len-1; i++)
        {
            cons[len-i] = (val % 10) + '0';
            val /= 10;
        }
    }
    else
    {
        for (int i = 0; i <= len; i++)
        {
            cons[len-i-1] = (val % 10) + '0';
            val /= 10;
        }
    }
    cons[len] = '\0';
    return cons;
}
int main(int arc, char* arv)
{
    int num = 444;
    char* arr = intToCharArray(num);
    int count = 0;
    std::string test = std::string(arr);
    std::string beg = "test";
    std::cout << test << std::endl;
    //changing it like this works
    arr = intToCharArray(num * 6);
    test = std::string(arr);
    std::cout << test << std::endl;
    //but changing it with a loop crashes the program
    for (int i = 0; i < 5; i++)
    {
        arr = intToCharArray(num * i);
        test = std::string(arr);
        std::cout << test << std::endl;
    }
    return 0;
};
Basically, I'm trying to convert an integer into a string. Everything seems to work... unless I run the code in a loop. I have absolutely NO idea what could even possibly be the problem. I've never run into, or even heard of, a problem like this. I'm honestly not even sure what to ask, so Google has been no help either.
 
     
     
    