首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c++指针正确使用Malloc和free

使用c++指针正确使用Malloc和free
EN

Stack Overflow用户
提问于 2013-05-13 18:51:18
回答 1查看 146关注 0票数 0

很抱歉,如果这个问题被认为是试图采取简单的方式,但我真的认为我只是需要一些澄清。我试着用malloc和免费的。我以为我理解他们,但我所做的任务本身有点令人困惑。

tklist数组中的每个元素都应该指向一个单独的令牌(在引号之间或由空格分隔的字符集)。所以,我需要分配空间,然后也释放它。

我不明白的是什么时候应该释放记忆。我试过在各种各样的地方解放它,但都没有用。我想我只是不完全明白一些事情,在过去的几天里,我一直在查找malloc和free,试图找出答案。(也许我应该在我的主语中自由?)也许我的strncpy错了?)任何帮助都是非常感谢的!

下面是函数,它以字符数组和char指针数组作为参数,并返回第一个参数中找到的标记数。函数应该解析令牌并依次将每个令牌添加到tklist数组中。

代码语言:javascript
复制
int parseCommandLine(char cline[], char *tklist[]){
    int i;
    int length;
    int count = 0; //counts number of tokens
    int toklength = 0; //counts the length of each token
    length = strlen(cline);
    for (i=0; i < length; i++) {   //go to first character of each token

        if (((cline[i] != ' ' && cline[i-1]==' ') || i == 0)&& cline[i]!= '"') {



            while ((cline[i]!=' ')&& (cline[i] != '\0') && (cline[i] != '\r')){
                toklength++;
                i++;
            }
        count ++;
          //---------------
        //tklist[count] = (char *) malloc( toklength +1);
        //strncpy(tklist[count], &cline[i], toklength);
          //  free( (void *)tklist[count] );
         //--------------

            toklength = 0;
        }
        //--------------
        //free( (void *)tklist[count] );
        //--------------
        if (cline[i] == '"') {
            do {
                toklength++;
                i++;
                if (cline[i] == ' ') {
                    toklength--;
                }
            } while (cline[i]!='"');
            count++;
            //--------------
            //tklist[count] = (char *) malloc( toklength +1);
            //strncpy(tklist[count], &cline[i], toklength);
            //free( (void *)tklist[count] );
            //--------------
            toklength = 0;
        }
        //--------------
        //free( (void *)tklist[count] );
        //--------------
    }
    cout << count;
    return count;



}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-13 19:05:20

使用完之后,您需要在调用方释放tklist。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16529082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档