如何理解kmp的next数组

这里t是要查找的子串,m是t串的长度。请问下kmp算法中next数组的含义是什么,以及下面这段代码的求法是否正确。

void getNext()
{
    nxt[0] = 0;
    int j = 0, i = 1;
    while (i < m)
    {
        if (t[j] == t[i])
        {
            nxt[i] = ++j;
            i++;
        }
        else if (j == 0)
        {
            nxt[i] = 0;
            i++;
        }
        else
        {
            j = nxt[j - 1];
        }
    }
}