So, I'm kind of a beginner at C++ ... I thought I had a firm grasp of dynamic memory allocation but I guess I don't. I've searched the net for numerous solutions but I still cannot fix my problem. I keep getting error 0xC00000FD:Stack overflow when I run debug. I'm pretty sure the problem has to do with the way I'm allocating memory in the default constructors but maybe it's something else. I guess I need some deeper insight. Any help or hint in determining the problem would be greatly appreciated.
It's a simple program to calculate area and perimeter of a rectangle from user input.
This is the header file:
#pragma once
class my_Rectangle
{
private:
    float m_area;
    float m_perimeter;
    float m_length;
    float m_width;
    void update_rec();
    my_Rectangle*tempSTORE;
public:
    float calc_area(float length,float width);
    float calc_perim(float length,float width);
    void change_RECTsize(float length,float width,my_Rectangle tempSTORE);
    my_Rectangle(); //constructor
    my_Rectangle(float length,float width);
    ~my_Rectangle(); //destructor
};
This is the class member definitons file:
#include "StdAfx.h"
#include "my_Rectangle.h"
#include <iostream>
//using namespace std;
//This function calculates the area
float my_Rectangle::calc_area(float length,float width)
{
    float area = width * length;
    std::cout<<"\nThe area of the rectangle is: "<<area<<" square metres."<<std::endl;  // ::scope operater
    return area;
}
//This function calculates the perimeter
float my_Rectangle::calc_perim(float length,float width)
{
float perimeter=(2*length)+(2*width);
std::cout<<"\nThe perimeter of the rectangle is "<<perimeter<<" metres."<<std::endl;
return perimeter;
}
//this function changes the size of the rectangle
void my_Rectangle::change_RECTsize(float length,float width,my_Rectangle tempSTORE)
{
    tempSTORE.m_length=length;
    tempSTORE.m_width=width;
    my_Rectangle::calc_area(length,width);
    my_Rectangle::calc_perim(length,width);
}
my_Rectangle::my_Rectangle() //default constructor
{
    tempSTORE=new my_Rectangle;
    tempSTORE->m_length=0.00;
    tempSTORE->m_width=0.00;
    tempSTORE->m_area=0.00;
    tempSTORE->m_perimeter=0.00;
}
my_Rectangle::my_Rectangle(float length,float width) //initialized constructor
{
    tempSTORE=new my_Rectangle;
    tempSTORE->m_length=length;
    tempSTORE->m_width=width;
    calc_area(length,width);
    calc_perim(length,width);
}
my_Rectangle::~my_Rectangle() //destructor
{
     delete tempSTORE;
std::cout<<"\nThe memory has been freed!!"<<std::endl; 
And this is the client file:
#include "stdafx.h"
#include "my_Rectangle.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    float xlength,xwidth;
    cout<<"Welcome to the rectangle Area Calculator!"<<endl;
    cout<<"Please enter the length and width of your rectangle:"<<endl;
    cout<<"Length: "; cin>>xlength;
    cout<<"Width: "; cin>>xwidth;
    cout<<"Rectangle Information:"<<endl;
    cout<<"Length: "<<xlength<<"m\tWidth: "<<xwidth<<" m"<<endl;
    my_Rectangle userRECT(xlength,xwidth);
    reTRY:
    int user_choice;
    cout<<"More options:"<<endl;
    cout<<"1. Change rectangle size"<<endl;
    cout<<"2. Exit"<<endl;
    cout<<"Enter a number: ";
    cin>>user_choice;
    switch (user_choice)
    {
    case 1:
        cout<<"Please enter the new length and width of rectangle:"<<endl;
        cout<<"Length: "; cin>>xlength;
        cout<<"Width: "; cin>>xwidth;
        cout<<"\nRectangle Information:"<<endl;
        cout<<"Length: "<<xlength<<"m\tWidth: "<<xwidth<<" m"<<endl;
        userRECT.change_RECTsize(xlength,xwidth,userRECT);
        break; 
    case 2:
        exit(1);
        break; 
    default: cout<<"\nThat is not a valid option. Please try again!" ;
     goto reTRY;
     break; 
    }
     cin.get();cin.get();
    return 0;
}
 
     
     
    