memset/sizeof function is invalid when PHP calls C + + extensions

Source: Internet
Author: User
Problem: in C + +, I'm used to initializing arrays with memset functions, such as:

int sz = 100;int *a = (int*) malloc (sizeof (int) * SZ); memset (A,0,sizeof (a));

The above code dynamically opens an int array A, the size is SZ, and the open memory is assigned to ASCII code 0

When PHP calls this C + + code (using the URL call php function), found that the Memset function does not work, the memory of array A is not assigned value, resulting in a number of subsequent program errors, troubleshooting found this problem

Cause: The root cause is that when PHP calls C + +, sizeof (a) does not return a pointing to the size of the contiguous memory space, but only returns the size of the pointer itself, so memset does not play its proper role.

Workaround: In the third parameter of Memeset, use sizeof (int) * SZ instead of sizeof (a) to pass in the actual size of the array as a parameter so that the Memset function works

When PHP calls C + + extensions, many library functions that involve pointers in C + + are problematic and sometimes have to be written on their own, possibly because of the memory management mechanism of the PHP call extension.

Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.

The above describes the PHP call C + + extension when the memset/sizeof function is invalid, including the aspects of the content, I hope the PHP tutorial interested in a friend helpful.

  • Related Article

    Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.