首页新闻找找看学习计划

C语言堆栈溢出问题

0
悬赏园豆:5 [待解决问题]

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,对内存这块不是很了解,望指教!!

rm_rf的主页 rm_rf | 初学一级 | 园豆:6
提问于:2019-03-02 19:10

建议给代码加上高亮,博问支持 markdown 代码高亮

dudu 1年前
< >
分享
所有回答(1)
0

你贴出的代码有问题,很多地方少了 *

从代码上看确实没问题,malloc 是在堆中分配内存,提示堆溢出很显然是你使用malloc的原因。有可能是LeetCode 的c编译器内部的堆内存限制本来就很小,你试试使用局部变量代替动态变量,不要在堆中分配内存。

Shendu.CC | 园豆:1914 (小虾三级) | 2019-03-03 13:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册