cudaErrorMemoryAllocation when read text file.

My code

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <fstream>
#include<iostream>
#include <experimental/filesystem>



int main() {

	//cudaError_t err = cudaSuccess;

	FILE *fp2 = fopen("key.txt", "r");
	if (!fp2)
	{
		fprintf(stderr, "Error opening file!\n");
		return 1;
	}

	const size_t max_lines = 55000;
	const size_t max_line_len = 256;

	char line[max_line_len];
	size_t line_len;

	char **m_keyword = NULL;
	int icount = 0;

	cudaError_t err = cudaMallocManaged((void**)&m_keyword, max_lines * sizeof(char*));
	if (err != cudaSuccess)
	{
		fprintf(stderr, "Error allocating memory for m_keyword! %s\n", cudaGetErrorString(err));
		fclose(fp2);
		return 1;
	}

	do
	{
		if (!fgets(line, max_line_len, fp2))
		{
			if (ferror(fp2) && !feof(fp2))
			{
				fprintf(stderr, "Error reading from file!\n");
				fclose(fp2);
				return 1;
			}
			break;
		}

		line_len = strlen(line);
		if ((line_len > 0) && (line[line_len - 1] == '\n'))
		{
			line[line_len - 1] = '\0';
			--line_len;
		}
		_sleep(0.01);

		err = cudaMallocManaged((void**)&(m_keyword[icount]), line_len + 1);
		if (err != cudaSuccess)
		{
			fprintf(stderr, "Error allocating memory for m_keyword[%d]! %s\n", icount, cudaGetErrorString(err));
			fclose(fp2);
			return 1;
		}



		strcpy(m_keyword[icount], line);
		++icount;
	} while (icount < max_lines);

	fclose(fp2);

	return 0;
}

I’m using the code to read text file.
Link of text file : http://www.mediafire.com/file/l3ra5vb4za3g9v0/key.txt/file

If i read a files have under 26000 lines, everthing is fine. But if over 26000, i got error “Access violation writing location 0x0000000000000000”

Plese help me.