- 论坛徽章:
- 0
|
- int StringIndex_KMP(SString s, int pos, SString t)
- {
- int i = pos ,j = 1;
- int* nextArray = next(t);
- if( pos < 1 || pos > s[0] - t[0] + 1)
- {
- return 0;
- }
- if (nextArray == NULL)
- {
- return 0;
- }
- while ( i <= s[0] && j <= t[0] )
- {
- if ( j== 0 || s[i] == t[j] )
- {
- i++;
- j++;
- }
- else
- {
- j = nextArray[j];
- }
- }
- /*
- free(nextArray);
- */
- if ( j > t[0] )
- {
- return (i - t[0]);
- }
- else
- {
- return 0;
- }
复制代码 在next函数里面用malloc动态分配了堆内存,然后将内存首地址指针赋给了nextArray.
因为担心内存泄露,想要在用完该堆内存之后free之,程序编译报错,应该是说找不到分配的内存大小,gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
问题:
1.如果不显式地释放掉这块内存,它的生存期在哪里?
2.如果想要释放该内存防止泄露,应该用什么方法可以做到?
求教各位,谢谢. |
|