0

我正在尝试将一些内存分配为 unsigned char* 但是当我这样做时,指针似乎没有被初始化!

    unsigned char* split = (unsigned char*) malloc ((sizeof(unsigned char)*sizeof(unsigned int)));
    memset(&split,0,sizeof(int));
    if(split==NULL) {
       std::cout<<"Unable to allocate memory!\n";
       system("pause");
       return 1;
    }

但是,每次我运行时都会收到错误消息。无论我使用什么数据类型,它似乎都会发生!

4

2 回答 2

4

您的memset调用不会写入您刚刚分配的缓冲区,即split. 它写入存储split变量本身的内存区域 - 如&split. 于是split就变成了NULL

于 2013-10-07T04:21:14.220 回答
0

当您调用memset()时,您将变量本身占用的内存归零split,而不是split指向的内存(malloc()分配的内存)。您需要删除&运算符:

unsigned char* split = (unsigned char*) malloc (sizeof(int));
if(split==NULL) {
   std::cout<<"Unable to allocate memory!\n";
   system("pause");
   return 1;
}
memset(split,0,sizeof(int));
于 2013-10-07T04:26:15.337 回答