In this section:
Overview
This error is generated when a call is made through an uninitialized function pointer.
Excerpt |
---|
Scroll Table Layout |
---|
sortDirection | ASC |
---|
repeatTableHeaders | default |
---|
widths | 10%,60%,10%,10%,10% |
---|
sortByColumn | 1 |
---|
sortEnabled | false |
---|
cellHighlighting | true |
---|
|
Code | Description | Enabled | Reported | Platform |
---|
FUNC_UNINIT_PTR | Function pointer is uninitialized | | Runtime | Windows/Unix |
|
Problem
The following code attempts to call a function through a pointer that has not been set:
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
linenumbers | true |
---|
|
/*
* File: funcuptr.c
*/
main()
{
void (*a)();
a();
return (0);
} |
Diagnosis at Runtime
Code Block |
---|
language | text |
---|
linenumbers | true |
---|
|
[funcuptr.c:8] **FUNC_UNINIT_PTR**
>> a();
Function pointer is uninitialized: a
Stack trace where the error occurred:
main() funcuptr.c, 8
**Memory corrupted. Program may crash!!** |
- Line 2: Source line at which the problem was detected.
- Line 3: Description of the problem and the expression that is in error.
- Line 5: Stack trace showing the function call sequence leading to the error.
- Line 6: Informational message indicating that a serious error has occurred which may cause the program to crash.
Repair
This problem normally occurs because some assignment statement has been omitted from the code. The current example can be fixed as follows:
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
linenumbers | true |
---|
|
extern void myfunc();
main()
{
void (*a)();
a = myfunc;
a();
} |