This is the source code for "sleeper.exe" I have:
int main(int argc, char** argv) {
    cout<<argv[1];
    return 0;
}
When I call from command line like this:
C:\sleeper 5
I see
5
in command line so this works fine..
Now I am trying to call this exe from some other exe like this:
std::cout << "ret is:" << ret;
std::cout << "\n";
CreateProcess("sleeper.exe", // No module name (use command line)
               ret, // Command line
               NULL, // Process handle not inheritable
               NULL, // Thread handle not inheritable
               FALSE, // Set handle inheritance to FALSE
               0, // No creation flags
               NULL, // Use parent's environment block
               NULL, // Use parent's starting directory 
               &si, // Pointer to STARTUPINFO structure
               &pi // Pointer to PROCESS_INFORMATION structure
             )
Here ret is 5 as well and I am sure because I see it in the commandline fine:
ret is: 5
There is a file called config.mpap in the same directory and I read the value from here like this:
std::ifstream myReadFile;
myReadFile.open("config.mpap");
char output[400];
if (myReadFile.is_open()) {
    while (!myReadFile.eof()) {
        myReadFile >> output;
    }
}
myReadFile.close();
char y = output[37];
int numberOfSleeps = y - '0'; // So now numberOfSleeps is 5
And then I convert numberOfSleeps to ret like this:
char* ret = NULL;
int numChars = 0;
bool isNegative = false;
// Count how much space we will need for the string
int temp = sleepTime;
do {
    numChars++;
    temp /= 10;
} while (temp);
ret = new char[ numChars + 1 ];
ret[numChars] = 0;
if (isNegative) ret[0] = '-';
int i = numChars - 1;
do {
    ret[i--] = sleepTime % 10 + '0';
    sleepTime /= 10;
} while (sleepTime);
Can please someone help me why ret is not passed to sleeper.exe from createprocess.exe?
EDIT:
It works like this:
if (!CreateProcess(NULL, // No module name (use command line)
                   "sleeper 5", // Command line
However this does not even compile:
std::string sleeper("sleeper ");
sleeper += ret;
if (!CreateProcess(NULL, // No module name (use command line)
                   sleeper, // Command line
 
    