joke100 come again!

hydralisk 2001-03-27 10:46:00
我用你给我的改了一下

char** GenaralPtr(const int h, const int w)
{
char* pByte = NULL;
DWORD* pdwFirst = NULL; // 地址为4字节
malloc(pdwFirst, h * sizeof(DWORD));
char** ppReturn = (char**)pdwFirst;
int i = 0;
for (; i < h; i++)
{
malloc(pByte, w);
pdwFirst[i] = pByte;
}
return ppReturn;
}
作了一个函数GenaralPtr,在另一个函数里用
char** bw1;
bw1=::GenaralPtr(bwh,bww);
编译抱错

D:\Location\LocationView.cpp(363) : error C2039: 'GenaralPtr' : is not a member of '`global namespace''
D:\Location\LocationView.cpp(371) : error C2660: 'malloc' : function does not take 2 parameters
D:\Location\LocationView.cpp(376) : error C2440: '=' : cannot convert from 'char *' to 'unsigned long'



...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hydralisk 2001-03-27
  • 打赏
  • 举报
回复
ok
joke100 2001-03-27
  • 打赏
  • 举报
回复

再重写一遍
这个函数产生的是一个指针数组,每个数组成员又是一个数组指针,,,跟普通的二维数组不同喔
DWORD* GenaralPtr(const int h, const int w)
{
char* pByte = NULL;
DWORD* pdwFirst = NULL; // 地址为4字节
pdwFirst = (DWORD*)malloc(h * sizeof(DWORD));
DWORD* ppReturn = pdwFirst;
int i = 0;
for (; i < h; i++)
{
pByte = malloc(w);
pdwFirst[i] = pByte;
}
return ppReturn;
}

因为使用的是堆内存,你在最后要手工释放才行,不然会有内存泄露的。。。
我再写一个释放的函数吧

void FreeCharPP(DWORD* ppMe, const int h)
{
if (!ppMe)
return;
for (int i = 0; i < h; i++)
free(ppMe[i]);

free(ppMe);
}

如果在其他的CPP中使用这种全局函数。
必须先用
extern DWORD* GenaralPtr(const int h, const int w);
extern void FreeCharPP(DWORD* ppMe, const int h);
声明后才可以使用。。。


joke100 2001-03-27
  • 打赏
  • 举报
回复
sorry!!!!!!!!!!!!!!!!!
你在其他的CPP中使用本函数之前,用
extern char** GenaralPtr(const int h, const int w);
声明一下才能使用

另外,函数更正如下
这个函数产生的是一个指针数组,每个数组成员又是一个数组指针,,,跟普通的二维数组不同喔
char** GenaralPtr(const int h, const int w)
{
char* pByte = NULL;
DWORD pdwFirst = NULL; // 地址为4字节
pdwFirst = (DWORD)malloc(h * sizeof(DWORD));
char** ppReturn = (char**)pdwFirst;
int i = 0;
for (; i < h; i++)
{
pByte = malloc(w);
pdwFirst[i] = pByte;
}
return ppReturn;
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧