分配内存不起作用

时间:2013-10-07 04:19:12

标签: c pointers malloc

我正在尝试将一些内存分配为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;
    }

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

2 个答案:

答案 0 :(得分:4)

您的memset调用不会写入您刚刚分配的缓冲区,split指向的缓冲区。它写入split变量本身存储的内存区域 - 由&split指向。于是split成为NULL

答案 1 :(得分: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));