我在我的ruby应用程序中遇到了瓶颈,但我无法弄清楚它在哪里放慢速度.我找到了memprof,但它不支持1.9.我还发现ruby-prof似乎在1.9.2上工作正常,但是内存分配需要一个修补的ruby解释器,我只能找到ruby 1.8的补丁.是否有一个红宝石探测器可以完成这项工作?
我正在尝试将一个字符串拆分成句子(由句子分隔符分隔).代码本身它工作但我不断在函数中发生内存泄漏.
char ** splitSentences(char *string) {
int sentencecount = 0;
char* buf = NULL;
char* str = NULL;
buf = malloc((strlen(string) + 1) * sizeof(char));
strcpy(buf,string);
str = buf;
sentencecount = countSentences(str);
if(sentencecount != 0)
{
char** sentences = NULL;
sentences = malloc((sentencecount + 1)*sizeof(char*));
memset(sentences,0,sentencecount+1);
char* strToken = NULL;
strToken = malloc((strlen(str)+1)*sizeof(char));
memset(strToken,0,strlen(str)+1);
strToken = strtok(str, SENTENCE_DELIMITERS);
int i = 0;
while(strToken != NULL) {
sentences[i] = NULL;
sentences[i] = malloc((strlen(strToken)+1)*sizeof(char));
strncpy(sentences[i], strToken,strlen(strToken) + 1);
strToken = strtok(NULL, SENTENCE_DELIMITERS); …Run Code Online (Sandbox Code Playgroud) 我在比较C中的字符串时遇到了麻烦.首先,我需要从命令行参数中找到每个字符串的长度,然后比较它们以及打印最大的字符串.
到目前为止,它只是打印每个类型字符串的长度.我需要根据长度而不是字母顺序来比较它们.
我不明白为什么它现在正在工作,我该怎么办呢?谢谢!
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i, length;
for(i = 0; i<argc; i++)
{
length = strlen(argv[i]);
printf("%s %d\n", argv[i], length);
if(strlen(argv[i]) < strlen(argv[i+1]))
{
printf("%s is the biggest \n", argv[i+1]);
}
else
{
printf("%s is the biggest \n", argv[i]);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)