Leetcode13 运行完后出现Heap buffer overflow

char * intToRoman(int num){
	int n;
	int x = 1000;
	char* s1;
	char* s = (char*)malloc(16 * sizeof(char));
    s1=s;
	while (x != 0) {
		n = num / x % 10;
		if (n != 0) {
			if (x == 1000) {
				if (n == 1) {
					*s1++ = 'M';
				}
				if (n == 2) {
					*s1++ = 'M';
					*s1++ = 'M';
				}
				if (n == 3) {
					*s1++ = 'M'; 
					*s1++ = 'M';
					*s1++ = 'M';
				}
			}
			if (x == 100) {
				if (n == 1) {
					*s1++ = 'C';
				}
				if (n == 2) {
					*s1++ = 'C'; 
					*s1++ = 'C';
				}
				if (n == 3) {
					*s1++ = 'C';
					*s1++ = 'C';
					*s1++ = 'C';
				}
				if (n == 4) {
					*s1++ = 'C';
					*s1++ = 'D';
				}
				if (n == 5) {
					*s1++ = 'D';
				}
				if (n == 6) {
					*s1++ = 'D';
					*s1++ = 'C';
				}
				if (n == 7) {
					*s1++ = 'D';
					* s1++ = 'C';
					*s1++ = 'C';

				}
				if (n == 8) {
					*s1++ = 'D';
					*s1++ = 'C';
					*s1++ = 'C';
					*s1++ = 'C';
				}
				if (n == 9) {
					*s1++ = 'C';
					*s1++ = 'M';
				}
			}
			if (x == 10) {
				if (n == 1) {
					*s1++ = 'X';
				}
				if (n == 2) {
					*s1++ = 'X';
					*s1++ = 'X';
				}
				if (n == 3) {
					*s1++ = 'X';
					*s1++ = 'X';
					*s1++ = 'X';
				}
				if (n == 4) {
					*s1++ = 'X';
					*s1++ = 'L';
				}
				if (n == 5) {
					*s1++ = 'L';
				}
				if (n == 6) {
					*s1++ = 'L';
					*s1++ = 'X';
				}
				if (n == 7) {
					*s1++ = 'L';
					*s1++ = 'X';
					*s1++ = 'X';
				}
				if (n == 8) {
					*s1++ = 'L';
					*s1++ = 'X';
					*s1++ = 'X';
					*s1++ = 'X';
				}
				if (n == 9) {
					*s1++ = 'X';
					*s1++ = 'C';
				}
			}
			if (x == 1) {
				if (n == 1) {
					*s1++ = 'I';
				}
				if (n == 2) {
					*s1++ = 'I';
					*s1++ = 'I';
				}
				if (n == 3) {
					*s1++ = 'I';
					*s1++ = 'I';
					*s1++ = 'I';
				}
				if (n == 4) {
					*s1++ = 'I';
					*s1++ = 'V';
				}
				if (n == 5) {
					*s1++ = 'V';
				}
				if (n == 6) {
					*s1++ = 'V';
					*s1++ = 'I';
				}
				if (n == 7) {
					*s1++ = 'V';
					*s1++ = 'I';
					*s1++ = 'I';
				}
				if (n == 8) {
					*s1++ = 'V';
					*s1++ = 'I';
					*s1++ = 'I';
					*s1++ = 'I';
				}
				if (n == 9) {
					*s1++ = 'I';
					*s1++ = 'X';
				}
			}
		}
			x = x / 10;
		}
		return s;
}

该如何解决

在中间打印 s1, 看看 s1 的值都变成什么了。