Background: 
We are learning about linked lists and stacks in class. I'm having trouble understanding how/where to declare a new stack.
Problem:
My program works until the second time it needs to add a new node, and then it crashes and gives this error "Unhandled exception at... std::bad_alloc at memory location..."
After a few times debugging the program (with it crashing at that error) I'm not able to compile at all without restarting visual studios, which is pretty scary).
Code Snippets:
Source.cpp
    #include<iostream>
    #include<string>
    #include<fstream>
    #include"ListStack.h"
    using namespace std;
    void openInputFile(ifstream&);
    string delimiterMatching(ifstream&);
    void main() {
        ifstream inFile;
        openInputFile(inFile);
        string errorMessage = delimiterMatching(inFile);
        inFile.close();
    }
    void openInputFile(ifstream &inputFile) {
        //...
        string fileName;
        cout << "File path: ";
        getline(cin, fileName); //Inputing file name from user
        inputFile.open(fileName.c_str()); //Opening the file
        //...
    }
    string delimiterMatching(ifstream &myFile) {
    char myChar;
    char findThis;
    char nextChar;
    char nextNextChar;
    LLStack myStack;
    cout << "Checking file!\n";
    myFile >> myChar;
    while (!myFile.eof()) {
        if (myChar == '(' || myChar == '[' || myChar == '{') {
            if (myChar == '(') {
                findThis = ')';
            }
            else if (myChar == '[') {
                findThis = ']';
            }
            else if (myChar == '{') {
                findThis = '}';
            }
            myStack.push(myChar);
        }
        else if (myChar == ')' || myChar == ']' || myChar == '}') {
            if (myChar != findThis) {
                return "ERROR";
            }
        }
        else if (myChar == '/') {
            myFile >> nextChar;
            cout << nextChar << endl;
            if (nextChar == '*') {
                myFile >> nextChar;
                myFile >> nextNextChar;
                while (nextChar != '*' && (nextNextChar != '/')) {
                    {
                        if (myFile.eof()) {
                            return "ERROR";
                        }
                        else {
                            nextChar = nextNextChar;
                            myFile >> nextNextChar;
                        }
                    }
                }
            }
            else {
                myChar = nextChar;
                continue;
            }
        }
        else {
            //"ignore other characters"??
            myFile >> myChar;
            cout << myChar << endl;
        }
    }
 if (myStack.isEmpty()) {
        return "Error free";
    }
    else {
        return "ERROR ";
    }
    system("pause");
}
ListStack.h
#pragma once
#ifndef LL_Stack
#define LL_Stack
#include"LList.h"
class LLStack {
private:
    LList list;
public:
    void push(char el) {
        list.push_back(el);
    }
};
#endif
LList.cpp
#include<iostream>
#include"LList.h"
LList::~LList() {
    for (LLNode *p; !isEmpty();) {
        p = head->next;
        delete head;
        head = p;
    }
}
void LList::push_back(char el) { //"insert el at the end of the list"
    if (tail != 0) { //if list not empty
        tail->next = new LLNode(el); //according to debugger this is causing the problem
        tail = tail->next;
    }
    else head = tail = new LLNode(el);
}
LList.h
#pragma once
#ifndef LINKED_LIST
#define LINKED_LIST
class LLNode {
public:
    LLNode() {
        next = 0;
    }
    LLNode(char el, LLNode *ptr = 0) {
        info = el; next = ptr;
    }
    char info;
    LLNode *next;// , *prev;
};
class LList { //For access to the list
public:
    LList() {
        head = tail = 0;
    }
    ~LList();
    int isEmpty() {
        return head == 0;
    }
    void push_back(char el); //"insert el at the end of the list"
private:
    LLNode *head, *tail;
};
#endif
example.txt
 /*
 * words
 * more words and, such
 *  all the words
 *  so many words
 */
int main() { 
    for (int i = 0; i < 500; i++) { //I'm really hoping to type more words here
        if (so many words){
        ) // should be a curly brace
    }
    return 0;
}
Research/Thoughts:
I don't know what I'm doing wrong, but after a little research, I'm pretty sure it has something to do with the way I'm declaring a new stack in Source.cpp.
I found this question where someone seems to be having the exact same problem, but I'm having a really hard time understanding the answers and how they apply to my project and if I am making the same mistake.
Question:
How do I fix this error?
 
    