The interface is simpler: one parameter in, the answer returned. You just check whether the pointer is null to verify success. The first form has some kind of other return value to check, which could be boolean, but I cannot tell, so I would have to look up the definitions of OK and NOK. And it is unclear from the interface whether I also need to check the pointer value, or indeed whether the pointer is NULL on failure. Looking into you implementation I can see that OK is returned if and only if the pointer is valid and the pointer is NULL on failure, but then I can write
so the return value is redundant -- it gives me no extra information.
However, if you want the function to indicate more than just a simple fail/succeed (e.g. different failure modes) then the first way is the only way to do it.
It mimics the standard malloc(3) function -- or it would do if the parameter was of type size_t rather than int -- and therefore has the benefit of familiarity, and makes it easier to port code written with malloc to use my_malloc.
void main()
{
int a={1,2,3,4,5,6,7,8,9,10};
int *p=a;
int *q=&a;
cout<<q-p+1<<endl;
}
The output is 10, how?
if we give cout<<q it will print the address, value won't print....
if we give cout<<p it will print the address, value won't print....
p has the base addr; q... (1 Reply)
Hi,
char *s="yamaha";
cout<<s<<endl;
int *p;
int i=10;
p=&i;
cout<<p<<endl;
1) For the 1st "cout" we will get "yamaha" as output. That is we are getting "content of the address" for cout<<s.
2) But for integer "cout<<p" we are getting the "address only".
Please clarify how we are... (2 Replies)
Hello all
im trying to build function that will return void function pointer
what is mean is ( not working )
the main function
void * myClass::getFunction(int type){
if(type==1)
return &myClass::Test1;
if(type==2)
return &myClass::Test2;
}
void myClass::Test1(){... (1 Reply)
I have a fundamental question on C pointer arithmetry..
Suppose i have a c string pointer already pointing to a valid location, Can I just do a
charptr = charptr +1;
to get to the next location, irregardless if my program is 32 or 64 bits?
or should i do it this way:
charptr =... (1 Reply)
Hi guys, I'm trying to understand pointers in C and made a simple example and I've problems with It.
Can someone help?
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int f1(char **str_);
int main(int argc, char **argv)
{
char *str = NULL;
f1(&str);
... (3 Replies)
I am struggling with the pointer to 2D-array (cf: 2D array of pointers). Can anybody help me elaborate how the pointer x moves in the memory to access the individual of y, especially the high lighted lines?
I have talked to one of the curators of the forum, but I am still not quite clear.
Here... (1 Reply)
I am passing a char* to the function "reverse" and when I execute it with gdb I get:
Program received signal SIGSEGV, Segmentation fault.
0x000000000040083b in reverse (s=0x400b2b "hello") at pointersExample.c:72
72 *q = *p;
Attached is the source code.
I do not understand why... (9 Replies)
Discussion started by: jose_spain
9 Replies
LEARN ABOUT OSF1
allocb
allocb(9r)allocb(9r)NAME
allocb - STREAMS: Allocates a message block
SYNOPSIS
#include <sys/stream.h>
MBLKP allocb(
int size,
uint pri );
ARGUMENTS
Specifies the number of bytes in the message block. Specifies the priority of the request. You use this argument to determine if the allo-
cation of memory blocks (waits) on the request. If you call the allocb interface at a high priority and it blocks on the request, the sys-
tem could deadlock. Typically, you pass the constant BPRI_WAITOK, which signifies that allocb can block. If allocb cannot block, you should
pass the BPRI_HI constant.
DESCRIPTION
The allocb interface attempts to allocate a STREAMS message block. Buffer allocation fails only when the system is out of memory. If no
buffer is available, you can call the bufcall interface, which helps a module recover from a memory allocation failure.
RETURN VALUES
Upon successful completion, the allocb interface returns a pointer to the allocated message block. This message block is of type struct
msgb *. The msgb data structure is defined in the /usr/sys/include/sys/stream.h file.
If allocb cannot allocate a message block, it returns a NULL pointer.
SEE ALSO
Kernel Routines: bufcall(9r), esballoc(9r), testb(9r)
Programmer's Guide: STREAMS
allocb(9r)