无效参数传递给了将无效参数视为严重错误的函数

请问各位,这是怎么回事啊
摸不清头脑,i+j为啥是无效参数啊?

#include<iostream>
using namespace std;
int a[100];
void find(string ,string );
int main() {
    string word;
    string substr;
    cin >>word>> substr;
    find(word, substr);
}
void find(string word,string substr) {
    for (int i = 0; i < word.size(); i++) {
        for (int j = 0; j < substr.size(); j++) {
                if (word[i+j] == substr[i + j])a[i]++;
        }
        if (a[i] == substr.size())cout << i;
    }
}

img

img

至少你a数组没有初始化为0 ,a[i]++是不行的
你这个word[i+j]和substr[i + j]没有道理啊,怎么能保证word的长度能够大于i+j呢?如果小于,那你就是越界访问字符串了啊
应该是word[i] == substr[j]