char* longestCommonPrefix(char** strs, int strsSize) {
char prefix=(char )malloc(10sizeof(char ));
if (!prefix)
{
exit(0);
}
int size = 0;
int length = sizeof(prefix)/sizeof(prefix[0]);
char c;
int len = strlen(strs[0]);
for (int i = 0; i < len; i++)
{
c = strs[0][i];
int flag = 0;
for (int j = 1; j < strsSize; j ++)
{
if (c != strs[j][i])
{
flag = 1;
break;
}
}
if (0 == flag)
{
if (size > length)
{
char newString = (char)realloc(prefix,(sizeof(prefix)/sizeof(prefix[0])+100)sizeof(char ));
if (!newString)
{
exit(0);
}
prefix = newString;
if (newString)
{
free(newString);
}
}
prefix[size++] = c;
prefix[size] = '\0';
length = sizeof(prefix)/sizeof(prefix[0])+10;
}else
{
return prefix;
}
}
return prefix;}
如上代码,这是leetcode上的题目,在本=本地没问题,提交到leetcode后报错:
不是很经常写C,对内存这块不是很了解,望指教!!
你贴出的代码有问题,很多地方少了 *
从代码上看确实没问题,malloc 是在堆中分配内存,提示堆溢出很显然是你使用malloc的原因。有可能是LeetCode 的c编译器内部的堆内存限制本来就很小,你试试使用局部变量代替动态变量,不要在堆中分配内存。
建议给代码加上高亮,博问支持 markdown 代码高亮
– dudu 5年前