calloc()函数而不是malloc()

时间:2016-01-29 20:45:01

标签: c malloc calloc

我想将{{ datefield|date:"j E Y" }}函数更改为$usqlM1 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM1']."' WHERE mcID='M1';" $usqlM2 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM2']."' WHERE mcID='M2';"; $usqlM3 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM3']."' WHERE mcID='M3';"; $usqlM4 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM4']."' WHERE mcID='M4';"; $usqlM5 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM5']."' WHERE mcID='M5';"; ,但我感到很困惑:如何在这段代码中执行此操作?

malloc()

2 个答案:

答案 0 :(得分:2)

calloc()实际上只是malloc()memset()为零。

假设您需要mycalloc()来补充mymalloc()

void *mymalloc( size_t bytes )
{
    ...
    return( ptr );
}
你会得到:

void *mycalloc( size_t bytes, size_t n )
{
    size_t total_bytes = bytes * n;
    void *ptr = mymalloc( total_bytes );
    memset( ptr, 0, total_bytes );
    return( ptr );
}

您需要添加来自mymalloc()的乘法溢出和NULL返回的检查。

答案 1 :(得分:0)

如果您有这样的问题,请务必查看手册页:

  • 的malloc:
  

void *malloc(size_t size); malloc()函数分配大小字节并返回指针   分配的内存。内存未初始化。如果大小为0,   然后malloc()返回NULL或可以的唯一指针值   后来成功传递给free()。​​

  • 释放calloc:
  

void *calloc(size_t nmemb, size_t size); calloc()函数   为每个和大小为字节的nmemb元素数组分配内存   返回指向已分配内存的指针。内存设置为   零。如果nmemb或size为0,则calloc()返回NULL或a   唯一指针值,以后可以成功传递给free()。​​

区别在于calloc还将已分配的内存块初始化为零。