online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby, C#, VB, Perl, Swift, Prolog, Javascript, Pascal, HTML, CSS, JS Code, Compile, Run and Debug online from anywhere in world. *******************************************************************************/ #include <iostream> using namespace std; void function(char *p) { cout << "inside function: " << *p; } int main() { char *pointer, z; for (int cnt = 0; cnt < 3; cnt++)//ESP + word { char w = 'X';//ESP + word o ile dobrze pamiętam wskaźnik stosu jest przestawiany o całe słowo nawet dla mniejszych typów danych pointer = &w; cout << "inside loop: " << *pointer << endl; } //ESP - 2 word //tu wprawdzie nie ma dostępu do cnt i w poprzez nazwę, ale na stosie nadal istnieją, więc na upartego dałoby radę się do nich dobrać używając asemblera, albo po bożemu zadeklarowanym wcześniej wskaźnikiem z = *pointer; cout << "outside loop: " << z << endl; int a = 12345678, b = 9987677, c = 1029384756; function(pointer);//to powoduje odłożenie adresu powrotnego i parametrów na stos, ESP + word + z grubsza X*word za każdy parametr typu prostego. spowoduje to nadpisanie pamięci w której rezydował char w. //ciekawe, w funkcji jednak też pokazuje 'X' - może to się robi wywołanie inline? //zbadam to dokładniej wieczorem }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue