首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这段小程序 运行时在第13行 *pszArray[p]=(char*)malloc(i+1); 报错,请诸位大侠给指正,有什么好的方法吗

2013-07-04 
这段小程序 运行时在第13行 *pszArray[p](char*)malloc(i+1) 报错,请各位大侠给指正,有什么好的方法吗?#

这段小程序 运行时在第13行 *pszArray[p]=(char*)malloc(i+1); 报错,请各位大侠给指正,有什么好的方法吗?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Split(const char *pszString, char ***pszArray, long *pnCount)
{
        int p=0;
        int i=0;
        for(;*pszString!=0;pszString++)
        {
                i++;
                if(*pszString==';')
                {
                        *pszArray[p]=(char*)malloc(i+1);
                        strncpy(*pszArray[p++],pszString-i,i);
                        i=0;
                }
        }
        for(i=0;i<p;i++)
        {
                printf("%s\r\n",*pszArray[i]);
        }
}
int main(int argc,char **argv)
{
        int Count;
        long *pnCount;
        char *pszString,**splitbuffer[32];
        pszString=(char*)malloc(32);
        memset(pszString,0,32);
        pszString=";abc;def;ghi;jk;";
        Split(pszString,splitbuffer,pnCount);
        return 0;
}
malloc
[解决办法]
 *pszArray[p] is not a pointer, you should have a:
 char** pszarray;
pszarray[p] = malloc(...); 
[解决办法]


引用:
Quote: 引用:

 *pszArray[p] is not a pointer, you should have a:
 char** pszarray;
pszarray[p] = malloc(...); 


现在按照二楼的修改为  (*pszArray)[p]=(char*)malloc(i+1); 但是仍然报错,执行的时候包内存错误。


确定是按照2L的方法改的?
    p=(int **)malloc(4*sizeof(int *));


    if (NULL==p) return;
    for (i=0;i<4;i++) {
        p[i]=(int *)malloc(5*sizeof(int));
        if (NULL==p[i]) return;
    }明显跟你那不一样
pszArray指向一块0xccccccc的内存,(*pszArray)[p]肯定会出错,可以打开内存调试看一下。

热点排行