Search Results

Search found 756 results on 31 pages for 'malloc'.

Page 20/31 | < Previous Page | 16 17 18 19 20 21 22 23 24 25 26 27  | Next Page >

  • MACRO Question: Returning pointer to a certain value

    - by Andrei Ciobanu
    Is it possible to write a MACRO that has a type and a value as its input parameters (MACRO(type,value)), and returns a valid pointer to a location that holds the submitted value. This macro should perform like the following function, but in a more generic manner: int *val_to_ptr(int val){ int *r = NULL; r = nm_malloc(sizeof(*r)); *r = val; return r; } Where nm_malloc() is a failsafe malloc. The Macro usage should be compatible with this usage: printf("%d",*MACRO(int,5)); Is it possible to achieve that ?

    Read the article

  • C - memset segfault for statically allocated char array

    - by user1327031
    I get a segfault when trying to memset an array of chars that was allocated statically, but not for an array of the same length that was allocated using malloc. variable definitions: //static char inBuff[IN_BUFF_LEN]; //dynamic char * inBuffD; function call: //static, cast used because char** != char (*) [n] serverInit(portNum, (char**) &inBuff, &serv_addr, &sockfd) //dynamic serverInit(portNum, &inBuffD, &serv_addr, &sockfd) use within the function: memset(*inBuffAdr, 0, IN_BUFF_LEN); I suspect that my problem is in the difference of the function calls, or to be more precise, my incomplete understanding of the "char** != char (*) [n]" situation. But I have been banging at this for too long and can't see the forest from the trees so any hints and advice would be very appreciated.

    Read the article

  • EXC_BAD_ACCESS from AudioBuffer

    - by jfalexvijay
    I am trying to do the record using AudioUnit for iPhone app. Changes: (start) I have added the following code bufferList = (AudioBufferList *)malloc(sizeof(AudioBuffer)); bufferList-mNumberBuffers = 1; bufferList-mBuffers[0].mNumberChannels = 2; bufferList-mBuffers[0].mDataByteSize = 1024; bufferList-mBuffers[0].mData = calloc(256, sizeof(uint32_t)); Changes: (end) static OSStatus recordingCallback(void *inRefCon, AudioUnitRenderActionFlags *ioActionFlags, const AudioTimeStamp *inTimeStamp, UInt32 inBusNumber, UInt32 inNumberFrames, AudioBufferList *ioData) { OSStatus status; status = AudioUnitRender(appdelegate-audioUnit, ioActionFlags, inTimeStamp, inBusNumber, inNumberFrames, appdelegate-bufferList); if(status != 0) NSLog(@"AudioUnitRender status is %d", status); SInt16* samples = (SInt16*)(ioData-mBuffers[0].mData); ..... } fixed: (I am getting OSStatus -50 error code)- Because I didn't initialize the bufferList. I am EXC_BAD_ACCESS from AudioBuffer (ioData-mBuffers[0].mData). I am not sure with this error. Please help me to resolve it.

    Read the article

  • How to compare two char* variables

    - by davit-datuashvili
    Suppose we have the following method (it is in c code): const char *bitap_search(const char *text, const char *pattern) My question is how can I compare text and pattern if they are char? This method is like a substring problem but I am confused a bit can I write in term of char such code? if (text[i]==pattern[i])? look i am interesting at this algorithm in java http://en.wikipedia.org/wiki/Bitap_algorithm how implement this in java? R = malloc((k+1) * sizeof *R); and please help me to translate this code in java

    Read the article

  • Why did this code still work?

    - by bstullkid
    Some old code that I just came across: MLIST * new_mlist_link() { MLIST *new_link = (MLIST * ) malloc(sizeof(MLIST)); new_link->next = NULL; new_link->mapi = NULL; new_link->result = 0; } This was being called to build a linked list, however I noticed there is no statement: return new_link; Even without the return statement there, the list still got built properly. Why did this happen? EDT: Platform: Mandriva 2009 64bit Linux 2.6.24.7-server GCC 4.2.3-6mnb1

    Read the article

  • Dynamical array of strings in C

    - by Ir0nm
    I'm trying to make array of strings, I have function rLine which reads line from stdin, each inputted line I need to save in array, but I don't have any idea about number of inputted string lines. So I need to dynamically increase array size to store them, I wrote such code: char *res[2], *old = res; while( 1 ){ line = rLine( stdin ), len = strlen( line ); res[row] = (char*)malloc( len + 1); strcpy( res[row++], line); res = (char**) realloc( res, row ); /* adding 1 more row, not sure adding size row? */ if ( /*some cond*/ ) break; } But this code doesn't seem to work, how correctly declare array and increase it size?

    Read the article

  • Operators vs Functions in C/C++

    - by user356106
    Someone recently asked me the difference between a C++ standard operator (e.g. new,delete,sizeof) and function (e.g. tan,delete, malloc). By "standard" I mean those provided by default by the compiler suite, and not user defined. Below were the answers I gave, though neither seemed satisfactory. (1) An operator doesn't need any headers to be included to use it : E.g. you can have a call to new without including any headers. However, a function (say free() ) does need headers included, compulsorily. (2) An operator is defined as such (ie as a class operator) somewhere in the standard headers. A function isn't. Can you critique these answers and give me a better idea of the difference?

    Read the article

  • Memory allocation in Linux

    - by Goofy
    Hello! I have a multi threaded application where I allocate buffers with data, which then wait in queues to be send via sockets. All buffers are reproducible because I use only buffers of fixed size in whole program (1024, 2048, 2080 and 5248 bytes). I noticed, that my program usually use up to 10 buffers of each length type at the same moment. So far I always manually allocate new buffer and then free it (using malloc() and free ()) where it's not needed any more. I started wondering if Linux is enough smart to cache this memory for me, so next time I allocate new buffer system only quickly receive a buffer I have already used before and not perform heavy operation of allocating new memory block?

    Read the article

  • Has anyone properly interpreted HTTP request based on this demo of winpcap?

    - by httpinterpret
    The example is here, and I tried it by changing the filter to tcp and dst port 80 and the following: void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) { .... ip_len = (ih->ver_ihl & 0xf) * 4; tcp_len = (((u_char*)ih)[ip_len + 12] >> 4) * 4; tcpPayload = (u_char*)ih + ip_len + tcp_len; /* start of url - skip "GET " */ url = tcpPayload + 4; end_url = strchr((char*)url, ' '); url_length = end_url - url; final_url = (u_char*)malloc(url_length + 1); strncpy((char*)final_url, (char*)url, url_length); final_url[url_length] = '\0'; printf("%s\n", final_url); .... } But through debug, I see tcpPayload is full of messy code,not supposed "GET ..." stuff. What's wrong with my implement?

    Read the article

  • Using sizeof with a dynamically allocated array

    - by robUK
    Hello, gcc 4.4.1 c89 I have the following code snippet: #include <stdlib.h> #include <stdio.h> char *buffer = malloc(10240); /* Check for memory error */ if(!buffer) { fprintf(stderr, "Memory error\n"); return 1; } printf("sizeof(buffer) [ %d ]\n", sizeof(buffer)); However, the sizeof(buffer) always prints 4. I know that a char* is only 4 bytes. However, I have allocated the memory for 10kb. So shouldn't the size be 10240? I am wondering am I thinking right here? Many thanks for any suggestions,

    Read the article

  • C++ vector and struct problem win32

    - by ~james2432
    I have a structure defined in my header file: struct video { wchar_t* videoName; std::vector<wchar_t*> audio; std::vector<wchar_t*> subs; }; struct ret { std::vector<video*> videos; wchar_t* errMessage; }; struct params{ HWND form; wchar_t* cwd; wchar_t* disk; ret* returnData; }; When I try to add my video structure to a vector of video* I get access violation reading 0xcdcdcdc1 (videoName is @ 0xcdcdcdcd, before I allocate it) //extract of code where problem is video v; v.videoName = (wchar_t*)malloc((wcslen(line)+1)*sizeof(wchar_t)); wcscpy(v.videoName,line); p->returnData->videos.push_back(&v); //error here

    Read the article

  • Which to use - "operator new" or "operator new[]" - to allocate a block of raw memory in C++?

    - by sharptooth
    My C++ program needs a block of uninitialized memory. In C I would use malloc() and later free(). In C++ I can either call ::operator new or ::operator new[] and ::operator delete or operator delete[] respectively later. Looks like both ::operator new and ::operator new[] have exactly the same signature and exactly the same behavior. The same for ::operator delete and ::operator delete[]. The only thing I shouldn't do is pairing operator new with operator delete[] and vice versa - undefined behavior. Other than that which pair do I choose and why?

    Read the article

  • Same memory space being allocated again & again

    - by shadyabhi
    In each loop iteration, variable j is declared again and again. Then why is its address remaining same? Shouldn't it be given some random address each time? Is this compiler dependent? #include<stdio.h> #include<malloc.h> int main() { int i=3; while (i--) { int j; printf("%p\n", &j); } return 0; } Testrun:- shadyabhi@shadyabhi-desktop:~/c$ gcc test.c shadyabhi@shadyabhi-desktop:~/c$ ./a.out 0x7fffc0b8e138 0x7fffc0b8e138 0x7fffc0b8e138 shadyabhi@shadyabhi-desktop:~/c$

    Read the article

  • user buffer after doing 'write' to file opened with O_DIRECT

    - by user1868481
    I'm using the O_DIRECT flag to write to the disk directly from the user buffer. But as far as I understand, Linux doesn't guarantee that after this call, the data is written. It just writes directly from the user buffer to the physical device using DMA or anything else... Therefore, I don't understand if I can write to the user buffer after the call to 'write' function. I'm sure that example code will help to understand my question: char *user_buff = malloc(...); /* assume it is aligned as needed */ fd = open(..., O_DIRECT); write(fd, ...) memset(user_buff, 0, ...) Is the last line (memset) legal? Is writing to the user buffer valid that is maybe used by DMA to transfer data to the device?

    Read the article

  • assignment from incompatible pointer type

    - by Hristo
    I have set up the following struct: typedef struct _thread_node_t { pthread_t thread; struct thread_node_t *next; } thread_node_t; ... and then I have defined: // create thread to for incoming connection thread_node_t *thread_node = (thread_node_t*) malloc(sizeof(thread_node_t)); pthread_create(&(thread_node->thread), NULL, client_thread, &csFD); thread_node->next = thread_arr; // assignment from incompatible pointer type thread_arr = thread_node; where thread_arr is thread_node_t *thread_arr = NULL; I don't understand why the compiler is complaining. Maybe I'm misunderstanding something.

    Read the article

  • casting char* to char**

    - by blue_whale
    I am having a tough time understanding the following piece of code: int stride = 512; int max_len = 1024 * stride; char *addr = (char *)malloc(max_len); for (int i=stride; i<max_len; i += stride) *(char **)&addr[i-stride] = (char*)&addr[i]; *(char **)&addr[i-stride] = (char*)&addr[0]; Looking at the code it seems this is trying to create some kind of circular link list. But I have no clue what those casts are actually doing.

    Read the article

  • Method sscanf() ambiguous behavior

    - by Carmen Cojocaru
    I am trying to understand how sscanf() works. I ran some examples from this page: http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xml and they don't work on my platform. I can't understand why. For instance: "sscanf("4711bar", "%d%s", a, b);" makes the program exit with an error... Here is one of the examples that work: "sscanf("foo", "f%s", a);". Does anybody know why? Do they work on your platforms? Thank you. This is my code: int main(void){ char *b = (char*)malloc(sizeof(char)*100); int a = 0; sscanf("4711bar", "%d%s", a, b); printf("%d", a); printf("%s", b); }

    Read the article

  • Stucture with array of pointers in C

    - by MVTCplusplus
    What's wrong with this? Can I have an array of pointers to SDL_Surfaces in a struct in C? typedef struct { int next_wheel; int pos_X; int pos_Y; int front_wheel_pos_X; int front_wheel_pos_Y; int velocity; int rear_wheel_pos_X; int rear_wheel_pos_Y; SDL_Surface* body; SDL_Surface* rear_wheel[9]; SDL_Surface* front_wheel[9]; } mars_rover; ... mars_rover* init_rover() { mars_rover* rover = (mars_rover*)malloc(sizeof(mars_rover) + sizeof(SDL_Surface) * 19); ... return rover; } int main() { mars_rover* rover = init_rover(); ... }

    Read the article

  • strategy to allocate/free lots of small objects

    - by aaa
    hello I am toying with certain caching algorithm, which is challenging somewhat. Basically, it needs to allocate lots of small objects (double arrays, < 256 elements), with objects accessible through mapped value, map[key] = array. time to initialized array may be quite large, generally more than 10 thousand cpu cycles. By lots I mean around gigabyte in total. objects may need to be popped/pushed as needed, generally in random places, one object at a time. lifetime of an object is generally long, minutes or more, however, object may be subject to allocation/deallocation several times during duration of program. What would be good strategy to avoid memory fragmentation, while still maintaining reasonable allocate deallocate speed? I am using C++, so I can use new and malloc. Thanks. I know there a similar questions on website, http://stackoverflow.com/questions/2156745/efficiently-allocating-many-short-lived-small-objects, are somewhat different, thread safety is not immediate issue for me.

    Read the article

  • finding character in string C language

    - by iSight
    Hi, I am searching a character at first occurence in string using the following code. But, it is taking some time when the character is too long or the character that i am searching is at far extend, which makes delay in other operations. How could i tackle with this problem. The code is below here. Note: attrPtr is a char* which holds a reference to a string containing '"' character at far extend. int position = 0; char qolon = '"';//character to search while (*(attrPtr + position++) != qolon); char* attrValue = NULL; attrValue = (char*)malloc(position * sizeof(char)); strncpy(attrValue, attrPtr, position-1);

    Read the article

  • How to algorithmically partion a keyspace?

    - by pbhogan
    This is related to consistent hashing and while I conceptually understand what I need to do, I'm having a hard time translating this into code. I'm trying to divide a given keyspace (say, 128 bits) into equal sized partitions. I want the upper bound (highest key) of each partition. Basically, how would I complete this? #define KEYSPACE_BYTE_SIZE 16 #define KEYSPACE_BIT_SIZE (KEYSPACE_BYTE_SIZE * 8) typedef struct _key { char byte[KEYSPACE_BYTE_SIZE]; } key; key * partition_keyspace( int num_partitions ) { key * partitions = malloc( sizeof(key) * num_partitions ); // ... }

    Read the article

  • seg violation using pycapsule_new

    - by user1733051
    I am trying some simple c API, where I am using PyCapsule_New to encapsulate a pointer. I am running into segment violation, can some body help me. mystruct *func1(int streamno, char mode,unsigned int options) { char * s; s=malloc(100); return s; } PyObject *Wrapper_func1(PyObject *self, PyObject *args) { int streamno; char mode; unsigned int options; mystruct* result; if (!PyArg_ParseTuple(args,"icI",&streamno,&mode,&options)) return NULL; result = func1(streamno,mode,options); return PyCapsule_New( result,NULL,NULL); }

    Read the article

  • How to get the Drive letter and Mount Path - MSDN

    - by new
    Hello all, I get the devices list from the system using SetupDiGetClassDevs Function - MSDN. Also i can able to get the vendor id and product id from the devices. But i cant able to get the drive letter and the mount path For Example if i plug the usb drive means , i have to get the drive letter like "G:/" Please help me to get the drive letter and mount path for the devices if (SetupDiEnumDeviceInterfaces(hDevInfo, NULL,&GUID_DEVINTERFACE_USB_DEVICE,i,&Interface_Info)) { wprintf(L"\tDeviccvcvcveInstanceId : %d\n", i); pspdidd->cbSize = sizeof(*pspdidd); SP_DEVICE_INTERFACE_DETAIL_DATA *pDetData = NULL; DWORD dwDetDataSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA) + 256; pDetData = (SP_DEVICE_INTERFACE_DETAIL_DATA*) malloc (dwDetDataSize); pDetData->cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA); SetupDiGetDeviceInterfaceDetail(hDevInfo,&Interface_Info,pDetData,dwDetDataSize, NULL,&DeviceInfoData); qDebug ()<<QString::fromWCharArray( pDetData->DevicePath ); }

    Read the article

  • C++: How to make comparison function for char arrays?

    - by Newbie
    Is this possible? i get weird error message when i put char as the type: inline bool operator==(const char *str1, const char *str2){ // ... } Error message: error C2803: 'operator ==' must have at least one formal parameter of class type ... which i dont understand at all. I was thinking if i could directly compare stuff like: const char *str1 = "something"; const char *str2 = "something else"; const char str3[] = "lol"; // not sure if this is same as above and then compare: if(str1 == str2){ // ... } etc. But i also want it to work with: char *str = new char[100]; and: char *str = (char *)malloc(100); I am assuming every char array i use this way would end in NULL character, so the checking should be possible, but i understand it can be unsafe etc. I just want to know if this is possible to do, and how.

    Read the article

  • How to find out the format of a float?

    - by cannyboy
    I'm working with someone else's code, and there is a float with some unusual qualities. If I output the float using: NSLog(@"theFloat: %f", record.theFloat); I get: theFloat: 0.000000 However, if I use: NSLog(@"(int)theFloat = %i", (int) record.theFloat); I get: (int)theFloat: 71411232 How do I discover the real format and value of theFloat? I know that it should contain a large number. Incidentally, the Record class which contains the float propertizes it in such a way: @property (assign) float* theFloat; There is also floatLength: @property (assign) int floatLength; And has this method, which seems to indicate that the float is of variable length (?): - (void) copyFloat:(float*)theF ofLength:(int)len { float *floatcopy = malloc(len*sizeof(float)); memcpy(floatcopy, theF, len*sizeof(float)); self.theFloat = floatcopy; }

    Read the article

< Previous Page | 16 17 18 19 20 21 22 23 24 25 26 27  | Next Page >